ナビゲーションコンポーネントで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 [〜#〜]の上に.
あなたは使うことができます
view.getDialog().dismiss();
bに移動した後。ただし、そのようにすると、[〜#〜] a [〜#〜]に戻ったときにダイアログが表示されません。断片。
本当に表示したい場合は、フラグメントを使用して、ダイアログのふりをする必要があります。アクティビティ link を使用したこれらの例のように。