DialogFragment закрывается при переходе от него к другому фрагменту - PullRequest
0 голосов
/ 29 октября 2019

В настоящее время в моем navgraph у меня есть назначение фрагмента диалога (тип фрагмента (диалоговое окно)). Когда я перехожу к этому диалоговому окну, а затем пытаюсь перейти к другому фрагменту из этого назначения, диалоговое окно закрывается, что, на мой взгляд, является непредсказуемым поведением.

Теперь я только перехожу к следующему фрагменту, как этот.

findNavController().popBackStack(R.id.testFragment, true)

Я хочу, чтобы диалог не закрывался и переходил только к другому диалогу, как фрагмент по умолчанию. Как мне этого добиться?

1 Ответ

1 голос
/ 29 октября 2019

В соответствии с этой проблемой , это работает как задумано:

Здесь есть несколько проблем, связанных с тем, как работают диалоги и фрагменты:

  1. Диалоги - это отдельные окна, которые всегда располагаются над окном вашей активности. Это означает, что диалоговое окно будет продолжать перехватывать кнопку возврата системы независимо от того, в каком состоянии находится базовый FragmentManager или какие FragmentTransactions вы выполняете.

  2. Операции с контейнером фрагмента (т. Е. Ваш обычный<fragment> адресаты) не влияют на фрагменты диалога. То же самое, если вы выполняете FragmentTransactions на вложенном FragmentManager.

Первоначальный выпуск поддержки <dialog> Navigation не учитывал эти ограничения и рассматривал бы назначения диалогов так же, как и любые другие в этом,с точки зрения Navigation, они могут быть помещены в задний стек и рассматриваться как любой другой <fragment> пункт назначения.

Поскольку это не совсем так, мы внесли несколько изменений в Navigation 2.1.0-alpha06, чтобы гарантировать, что состояние мира Navigation соответствует тому, что вы на самом деле видите на экране, и предотвратить сбои, подобные тому, что был в комментарии № 5.

Суть в том, что <dialog> адресаты теперь автоматически отображаютсяпри переходе к пункту назначения без диалогов и действий, например к пункту назначения. Для справки это было сделано в https://android -review.googlesource.com / 996359 и https://android -review.googlesource.com / 1007662

Поэтому ожидается, что вы перейдете к месту назначения без диалоговИон, что любое место назначения диалога выталкивается из заднего стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...