Смартфону нужна активность и планшет DialogFragment - PullRequest
0 голосов
/ 15 ноября 2011

Я занимаюсь разработкой простой игры.После каждого раунда результаты будут отображаться.В версии для смартфона результаты получат собственный экран (обычно я использую Activity, которая отображает фрагмент).В версии для планшета результаты будут отображаться в диалоговом окне.(Обычно я бы использовал DialogFragment).

Теперь я не уверен, как это сделать правильно.Я читаю Фрагмент не должен загружать другой Фрагмент, если Фрагмент не является DialogFragment.Но если я использую DialogFragment, я не могу использовать его, чтобы заполнить весь экран.(И если это возможно, я думаю, что на самом деле это не так, как это должно быть сделано)

Я мог бы написать макет "result.xml", DialogFragment и Activity плюс Fragment.Но таким образом я должен реализовать функции экрана результатов дважды, и насколько я знаю, это то, что Фрагмент должен помешать разработчикам.

Есть ли лучшая практика для этого?

1 Ответ

3 голосов
/ 16 ноября 2011

Вам не нужно иметь Fragment и DialogFragment, так как DialogFragment может отображаться в виде диалога или нет, в зависимости от случая, см. Пример демонстрации API (что-то вроде FragmentDialogOrActivity) .

ОК, так что несколько способов сделать это, сохраните DialogFragment и затем:

  1. На планшете вызовите show, чтобы отобразить его в виде диалога.
  2. На телефоне просто позвоните replace через FragmentTransaction, чтобы заменить ваш DialogFragment в тот же контейнер, что и фрагмент вашей игры.
  3. Создайте на телефоне простое действие-обертку, которое затем можно вызвать с помощью startActivity(ForResult), и вызовите этот вызов-обертку setContentView с простой полноэкранной компоновкой, а затем добавьте свой DialogFragment в контейнер согласно пункту 2.

Что касается того, что является лучшей практикой, я не обязательно придерживаюсь мнения, что фрагмент не должен загружать фрагмент, особенно если они тесно связаны, и я не вижу никаких проблем с цифрой 2 для вашего простого приложения. В противном случае просто идите с 3, поскольку это мало что меняет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...