Индикатор выполнения Android DialogFragment - PullRequest
32 голосов
/ 04 сентября 2011

Я искал везде и не могу найти решение этой проблемы.

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

Я использую DialogFragment с пакетом совместимости Android для создания индикатора выполнения (не могу найти никакой документации по нему, только для базового \ диалогового окна предупреждения ), потому что showDialog() устарела. Прямо сейчас я просто показываю настраиваемое окно сообщения в качестве счетчика входа в систему.

В итоге:

  • Как мне настроить счетчик хода с DialogFragment.
  • Как я могу отклонить его в другой теме после изменения ориентации.

Ответы [ 2 ]

60 голосов
/ 09 сентября 2011

Для отображения счетчика хода выполнения просто переопределите DialogFragment.onCreateDialog () в своем фрагменте диалога следующим образом (не нужно переопределять onCreateView()):

@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
    final ProgressDialog dialog = new ProgressDialog(getActivity());
    //
    dialog.setTitle(R.string.login_title);
    dialog.setMessage(getString(R.string.login_message));
    dialog.setIndeterminate(true);
    dialog.setCancelable(false);
    // etc...
    return dialog;
}

Что касается отклонения этого фрагмента диалога откуда-то еще, вам нужно удержать FragmentManager (изнутри вашего следующего FragmentActivity или Fragment) и вызвать popBackStack() на это (если вы не выполняете никакие другие операции с фрагментами за это время).

Если между вашим фрагментом диалога прогресса и следующей операцией есть больше шагов / фрагментов транзакций, вам, вероятно, понадобится один из других popBackStack(...) методов, которые принимают идентификатор или тег, чтобы вытащить все до фрагмента диалога прогресса из стек.

20 голосов
/ 19 октября 2013

Я знаю, что это старый вопрос, но я хочу поделиться гораздо лучшим решением для этого

В соответствии с Android Protip:

"Прекратить использование ProgressDialog, встроенные индикаторыВаш друг "

Как говорит Роман Нурик :

enter image description here

Это быстро.Прекратите использование ProgressDialog и других индикаторов модальной загрузки.Они очень мешают и раздражают, особенно когда:

  • Вы видите один каждый раз, когда вы переключаете вкладки.

  • Вы не можете выйти назадиз них.

  • Они говорят: «Пожалуйста, подождите».Нет, спасибо, я бы просто удалил.

Либо покажите индикаторы загрузки в соответствии с вашим контентом (например, http://developer.android.com/training/animation/crossfade.html) или еще лучше, загружайте небольшие объемы данных в фоновом режиметак что вы минимизируете необходимость показывать индикатор загрузки.

Подробнее о прогрессе и активности в рекомендациях по проектированию .

...