Search code examples
androidandroid-navigationandroid-jetpackandroid-architecture-navigation

Using DialogFragment as one of the Fragment in Android NavController


I have a graph defined using XML and I added a DialogFragment as one of the Fragment in my NavGraph. when I call NavController.navigate with resId and bundle on that nav controller I don't see any Dialog being displayed. Is there any way I can use DialogFragment instead of standard Fragment?

<fragment
        android:id="@+id/noLoginDialog"
        android:name="com.ram.view.NoLoginDialog"
        android:label="NoLoginDialog">
        <argument
            android:name="argTitle"
            android:defaultValue="null"
            app:type="string"/>
        <argument
            android:name="argBody"
            android:defaultValue="null"
            app:type="string"/>
        <argument
            android:name="argButton"
            android:defaultValue="null"
            app:type="string"/>
    </fragment> 

and my action is defined as below

 <container_fragment
        android:id="@+id/homeFragment"
        android:name="com.ram.home.HomeFragment"
        android:label="HomeFragment">

        <action
            android:id="@+id/action_homeFragment_to_noAuthAlertDialog"
            app:destination="@id/noLoginDialog"/>
    </container_fragment>

My other actions with activity and fragments works just fine.


Solution

  • hum, Navigation Library will never open an Fragment as Dialog, it just replace the first (home destination) to other destination in your NavHostFragment.

    Google said:

    A destination is any place you can navigate to in your app. While destinations are usually Fragments representing specific screens..

    Please provide more information, like your navigation code (java/kotlin).

    Take a read on this official Google post to understand more about Navigation: https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing