С недавним акцентом Android на использовании DialogFragment контейнера вы не должны вызывать dismiss для каждого
Поскольку в диалогах будет контейнер Fragment, вы можете просто использовать их lifecycle . Рассмотрим этот DialogFragment:
public class FragDialog extends DialogFragment{
public ProgressDialog _dialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
//this.dismiss(); <-- The dialogs may be dismissed here
}
}
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
_dialog = new ProgressDialog(getActivity());
return _dialog;
}
@Override
public void onPause() {
super.onPause();
// <--------- You may overload onPause
}
}
То, что вы покажете в своей деятельности, используя менеджер фрагментов, обычно называя его так:
FragmentManager fm = getSupportFragmentManager();
FragDialog fragDialog = new FragDialog();
fragDialog.show(fm, "my_tag");
Обратите внимание, что вы можете изменить действия DialogFragment в onPause. Когда ваша активность вызывает onPause, эта onPause также будет вызываться.
Закрытие диалога в onPause () с помощью this.dismiss () не будет работать, потому что после возобновления действия он также возобновит диалог. (Я думаю, это потому, что savestate сохраняется до onPause).
Но вы можете спокойно закрыть диалог (ы) в onCreate, если обнаружите saveInstanceState (резюме), как показано в коде.