Подтвердить что ты не робот

Панель выполнения Android DialogFragment

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

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

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

В резюме:

  • Как настроить счетчик Progress с помощью DialogFragment.
  • Как я могу отклонить его в другом потоке после изменения ориентации.
4b9b3361

Ответ 1

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

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

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

Как Роман Нурик состояния:

enter image description here

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

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

  • Вы не можете вернуться из них.

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

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

Подробнее о прогрессе и активности в рекомендации по дизайну.

Ответ 2

Для отображения счетчика прогресса просто переопределите 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(...), которые берут идентификатор или тег, чтобы вытащить все до вашего фрагмента диалога выполнения с стек.