J'essaie de naviguer de DialogFragment
à Fragment
dans le composant de navigation, mais j'obtiens un résultat étrange.
Lorsque je navigue de DialogFragment
vers Fragment
, le fragment d'arrière-plan se transforme en fragment cible avec la boîte de dialogue actuelle au-dessus, au lieu de simplement se déplacer vers le fragment cible.
Voici le graphique de navigation.
<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>
Pourquoi j'obtiens ce comportement ou comment le corriger?
Par correction, je veux dire un comportement de dialogue normal. Disons, j'ai une boîte de dialogue [~ # ~] d [~ # ~] au-dessus d'un fragment [ ~ # ~] a [~ # ~] et passez à un fragment [~ # ~] b [~ # ~] à partir d'un bouton sur [~ # ~] d [~ # ~] , l'écran devrait afficher [~ # ~] b [~ # ~] . Et quand je reviens de [~ # ~] b [~ # ~] , il devrait revenir à l'étape précédente de [~ # ~] d [~ # ~] au-dessus de [~ # ~] a [~ # ~] .
Vous pourriez utiliser
view.getDialog().dismiss();
après avoir navigué vers B. Mais de cette façon, la boîte de dialogue ne sera pas visible lorsque vous revenez à [~ # ~] a [~ # ~] fragment.
Si vous voulez vraiment qu'il soit visible, vous devriez peut-être essayer d'utiliser Fragment et prétendre qu'il s'agit de Dialog. Comme dans cet exemple avec l'activité lien .