App navigation

Adding navigation library to project

Add following code to project level build.gradle file


classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha05"

Project-level build.gradle

//on top of file
apply plugin: 'androidx.navigation.safeargs'

implementation "android.arch.navigation:navigation-fragment-ktx:1.0.0"
implementation "android.arch.navigation:navigation-ui-ktx:1.0.0"

In the layout of main activity or home activity add following

<fragment android:id="@+id/myNavHostFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:name="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/navigation"
app:defaultNavHost="true"/>

MainActivity.java

onCreate(){
initialize nav controller
val navController = this.findNavController(R.id.myNavHostFragment)
NavigationUI.setupActionBarWithNavController(this,navController)
}

// enable upbutton
override fun onSupportNavigateUp(): Boolean {
        val navController = this.findNavController(R.id.myNavHostFragment)
        return navController.navigateUp()
    }

now create a navigation.xml under resources folder. Open design and add your first fragment as destination. While creating fragments make sure to uncheck create layout file, include fragment factory methods, include interface callbacks.

Code to navigate using onClickListener

view?.findNavController()?.navigate(SubcategoryFragmentDirections.actionSubcategoryFragmentToSubCategoryDetailFragment())

get arguments

CurrentFragmentArgs args = CurrentFragmentArgs .fromBundle(getArguments)

Last updated