Привет, товарищи по разработке Android,
Я пытаюсь сделать два DialogFragment подряд, поэтому, когда первый отменяется, выскакивает второй.
Вот что у меня есть:
В своей деятельности я вызываю следующий метод:
void showFirstDialog() {
// Pass the context to do a callback
DialogFragment newFragment = ChangeDialogFragment.newInstance(mContext);
newFragment.show(getSupportFragmentManager(), "myFirstDialogTag");
}
В моем DialogFragment у меня есть следующий код, чтобы определить, что он будет отменен:
@Override
public void onCancel(DialogInterface dialog) {
// Use Context to do a callback and inform the Activity that
// Fragment is cancelled
((Activity) mContext).firstDialogCanceled();
super.onCancel(dialog);
}
Вернувшись в свою деятельность, я реагирую на это событие, открывая второй диалог:
void firstDialogCanceled {
DialogFragment newFragment = InformationDialogFragment.newInstance();
newFragment.show(getSupportFragmentManager(), "mySecondDialogTag");
}
Это прекрасно работает, пока у меня нет изменения ориентации в первом диалоге. Когда он у меня есть, я получаю следующую ошибку:
java.lang.IllegalStateException: невозможно выполнить это действие после
onSaveInstanceState
Это исключение возникает в строке "newFragment.show (getSupportFragmentManager ()," mySecondDialogTag ");"
Я подумал, как решить эту проблему, - закрыть первый диалог вручную. Я попробовал следующее:
DialogFragment firstFragment = (DialogFragment) getSupportManager().findFragmentByTag("myFirstDialogTag");
firstFragment.dismiss();
Опять же, без изменения ориентации все работает нормально. Когда у меня меняется ориентация, когда на экране появляется первый диалог, я получаю исключение NullPointerException в строке "firstFragment.dismiss ()".
Почему это происходит? Почему FragmentManager забывает о моем DialogFragment после изменения ориентации и почему я не могу просто показать второй. Ссылки на Android говорят:
вы должны использовать show (FragmentManager, String) или
show (FragmentTransaction, String) для добавления экземпляра DialogFragment
в ваш пользовательский интерфейс, так как они отслеживают, как DialogFragment должен удалить
сам, когда диалог закрывается.
Я действительно использую шоу, но оно все еще не работает должным образом.
Любая подсказка высоко ценится!
Приветствия Ali3n