web-dev-qa-db-ja.com

ナビゲーションコンポーネントでダイアログからフラグメントにナビゲートする方法は?

ナビゲーションコンポーネントで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 [〜#〜]の上に.

6
musooff

あなたは使うことができます

view.getDialog().dismiss(); 

bに移動した後。ただし、そのようにすると、[〜#〜] a [〜#〜]に戻ったときにダイアログが表示されません。断片。

本当に表示したい場合は、フラグメントを使用して、ダイアログのふりをする必要があります。アクティビティ link を使用したこれらの例のように。

0
Klaudia