Как перейти от диалога к фрагменту в компоненте навигации? - PullRequest
1 голос
/ 31 мая 2019

Я пытаюсь перейти от DialogFragment к Fragment в компоненте навигации, но получаю странный результат.

enter image description here

Когда я перемещаюсь от DialogFragment до Fragment, фрагмент фона меняется на целевой фрагмент с текущим диалоговым окном поверх него, а не просто перемещается к целевому фрагменту.

Вот график навигации.

<navigation
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/home"
    app:startDestination="@+id/titleScreen">

    <fragment
        android:id="@+id/titleScreen"
        android:name="com.example.android.navigationadvancedsample.homescreen.Title"
        android:label="@string/title_home"
        tools:layout="@layout/fragment_title">
        <action
            android:id="@+id/action_title_to_about"
            app:destination="@id/aboutScreen"/>
    </fragment>
    <dialog
        android:id="@+id/aboutScreen"
        android:name="com.example.android.navigationadvancedsample.homescreen.About"
        android:label="@string/title_about"
        tools:layout="@layout/fragment_about">
        <action
            android:id="@+id/action_aboutScreen_to_register"
            app:destination="@id/register" />
    </dialog>
    <fragment
        android:id="@+id/register"
        android:name="com.example.android.navigationadvancedsample.formscreen.Register"
        android:label="fragment_leaderboard"
        tools:layout="@layout/fragment_leaderboard" />
</navigation>

Почему у меня такое поведение или как это исправить?

Под исправлением я подразумеваю нормальное поведение диалога. Скажем, у меня есть диалог D поверх фрагмента A и переход к фрагменту B с кнопки на D , На экране должно появиться B . И когда я возвращаюсь из B , он должен перейти к предыдущему этапу D поверх A .

Ответы [ 2 ]

2 голосов
/ 25 июля 2019

Спасибо @musooff за регистрацию эта ошибка

Эта проблема была исправлена ​​в Navigation 2.1.0-alpha06, наряду с другими несоответствиями в диалоге, такими как кнопка "Назад" при всплывающем диалоге .

Однако обновите до версии 2.1.0-beta02 или выше, если можете.

0 голосов
/ 03 июня 2019

Вы можете использовать

view.getDialog().dismiss(); 

после перехода к B. Но в этом случае диалог не будет виден, когда вы вернетесь к фрагменту A .

Если вы действительно хотите, чтобы он был виден, возможно, вам следует попытаться использовать Fragment и сделать вид, что это Dialog.Как в этом примере с активностью ссылка .

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