Android JetPack is a set of android components designed with Kotlin in mind, available with Android Studio 3.2.
This library provode major 4 component
Navigation
DataMnager
Slice
Paging
<fragment android:id="@+id/loginFragment" android:name="com.samset.jetpack.fragment.LoginFragment" android:label="fragment_login" tools:layout="@layout/fragment_login" > <argument android:name="title" android:defaultValue="@string/signupdata" /> <action android:id="@+id/action_loginFragment_to_signUpFragment" app:destination="@id/signUpFragment" /> </fragment> <fragment android:id="@+id/signUpFragment" android:name="com.samset.jetpack.fragment.SignUpFragment" android:label="fragment_sign_up" tools:layout="@layout/fragment_sign_up" > <argument android:name="signupdata" android:defaultValue='""' /> </fragment>
getSupportFragmentManager().replaceFragment(R.id.maincontainer,new YourFragment()).commit;
val navController = findNavController(mainNavigationFragment) NavigationUI.setupActionBarWithNavController(this, navController) navController.navigate(R.id.loginFragment)
val action = LoginFragmentDirections.action_loginFragment_to_signUpFragment() action.setSignupdata("Hello sam! How are you?") val navController = view.findNavController() navController.navigate(action)
infos.name="samset" infos.mobileNo="9811054xxx" val bundle = Bundle() bundle.putSerializable("signupdata",infos) val navController = view.findNavController() navController.navigate(R.id.signUpFragment,bundle)
If you want Maintain fragment backstack then override this method in your MainActivity
override fun onSupportNavigateUp()=findNavController(R.id.mainNavigationFragment).navigateUp()
If you want not maintain the backstack specific fragment then you add one line of code in navigation_graph like..
<fragment android:id="@+id/fragmentSecvond" android:name="com.samset.jetpacknavigation.fragments.FragmentSecond" android:label="fragment_fragment_secvond" tools:layout="@layout/fragment_fragment_secvond"> <argument android:name="mydata" android:defaultValue="defaulttext" app:type="string" /> <action android:id="@+id/action_fragmentSecvond_to_fragmentThird" app:clearTask="true" //** add this line for clear backstack ** app:destination="@id/fragmentThird" /> </fragment>
You can also be change the action "Pop To" behavior from attribute pannel( from xml app:popUpTo="@+id/FragmentOne). This way when user will click back, he will be navigated to FragmentOne instead of the original destination.
<fragment android:id="@+id/fragmentThird" android:name="com.samset.jetpacknavigation.fragments.FragmentThird" android:label="fragment_fragment_third" tools:layout="@layout/fragment_fragment_third"> <action android:id="@+id/action_fragmentThird_to_fragmentFourth" app:destination="@id/fragmentFourth" /> <action app:popUpTo="@id/action_fragmentSecond" // <b>.add this line and change pop to destination</b> android:id="@+id/action_fragmentThird_to_fragmentOne" app:destination="@id/fragmentOne" /> </fragment>
more details Blog Pages.