Я пытаюсь перейти от DialogFragment
к Fragment
в компоненте навигации, но получаю странный результат.
При переходе от 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 ответа
Спасибо @musooff за регистрацию этой ошибки
Эта проблема была исправлена в Navigation 2.1.0-alpha06 вместе с другими несоответствиями в диалоговом окне, такими как кнопка «Назад» при открытии диалогового окна.
Тем не менее, обновите до 2.1.0-beta02 или выше, если можете.
Вы могли бы использовать
view.getDialog().dismiss();
После перехода к B. Но в этом случае диалог не будет виден, когда вы вернетесь к фрагменту A .
Если вы действительно хотите, чтобы он был видимым, возможно, вам следует попробовать использовать Fragment и сделать вид, что это Dialog. Как и в этом примере с ссылкой.
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .