У меня есть DialogFragment
, называют его A
, который представляет собой вариант, который приводит ко второму DialogFragment
, B
, который отображается. B
предоставляет дополнительные возможности.Предотвратите DialogFragment «A» появляясь, когда выбор сделан на DialogFragment «B»
Функциональности я требую заключается в следующий:
- сделать выбор в
A
приводит кB
отображается (как указано выше). - Если пользователь нажимает
back
, пока отображаетсяB
,A
следует возобновить. - Если пользователь делает выбор в
B
, тоB
должен уволить иA
не должен появляться повторно.
В A
, внутри onItemClick()
обработчика вызываю B
появляться с помощью:
FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.remove(DialogFragmentA.this);
transaction.addToBackStack("transaction_label");
DialogFragmentB dialogFragment = DialogFragmentB.newInstance(...some args here...);
dialogFragment.show(transaction, "frag_B");
Я называю .addToBackStack()
, как я понимаю, это приведет к тому, ключ back
совать и отменить транзакцию. То есть, замените B
на A
.
До сих пор выполнялись требования 1 и 2.
B
использует AlertDialog.Builder
. Для слушателя используется положительная кнопка. Когда эта положительная кнопка нажата, я хочу выполнить требование 3. То есть B
должен отклоняться и A
не должен появляться снова. Но то, что на самом деле происходит, - A
.
Я предполагаю, что в реализации положительной кнопки AlertDialog
есть вызов dismiss()
, который вызывает выпадение назад стека, в результате чего снова появляется A
. Это так?
То, что я постарался сделать, состоит в том, что в положительной кнопке onClick()
необходимо получить FragmentManager
и позвонить по телефону .popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
. Но это не имеет никакого видимого эффекта; A
продолжает появляться. Использование popBackStackImmediate()
также не имеет эффекта.
Возможно, это связано с тем, что цикл событий уже каким-то образом совершил попытку выскочить обратно-стек к тому времени, когда выполняется функция onClick()
положительной кнопки?
Буду благодарен за объяснение происходящего и то, как я могу заставить его работать должным образом.