Navigate fragment to fragment
Navigation.xml
<?xml version="1.0" encoding="utf-8"?>
<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/navigation_graph"
app:startDestination="@id/firstFragment">
<fragment
android:id="@+id/firstFragment"
android:name="com.journaldev.androidjetpacknavigation.FirstFragment"
android:label="navigation_first_fragment"
tools:layout="@layout/navigation_first_fragment" >
<action
android:id="@+id/action_firstFragment_to_secondFragment"
app:destination="@id/secondFragment"
app:enterAnim="@anim/nav_default_enter_anim" />
</fragment>
<fragment
android:id="@+id/secondFragment"
android:name="com.journaldev.androidjetpacknavigation.SecondFragment"
android:label="navigation_second_fragment"
tools:layout="@layout/navigation_second_fragment" />
</navigation>
Alternate: 1
View.OnClickListener s = Navigation.createNavigateOnClickListener(R.id.action_firstFragment_to_secondFragment);
Button button = view.findViewById(R.id.button_frag1);
button.setOnClickListener(s);
Alternate: 2
final NavController navController = Navigation.findNavController(getActivity(), R.id.my_nav_host_fragment);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
navController.navigate(R.id.action_firstFragment_to_secondFragment);
}
});
Alternate: 3
final NavDirections navDirections = FirstFragmentDirections.actionFirstFragmentToSecondFragment();
final NavController navController = Navigation.findNavController(getActivity(), R.id.my_nav_host_fragment);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
navController.navigate(navDirections);
}
});
*** Now see how to pass the argument from FirstFragment to SecondFragment
Navigation.xml
<fragment
android:id="@+id/firstFragment"
android:name="com.journaldev.androidjetpacknavigation.FirstFragment"
android:label="navigation_first_fragment"
tools:layout="@layout/navigation_first_fragment" >
<argument
android:name="test_string"
android:defaultValue="hello world"
app:argType="string" />
</fragment>
MainActivity.java
final Bundle bundle = new Bundle();
bundle.putBoolean("test_boolean", true);
final NavController navController = Navigation.findNavController(getActivity(), R.id.my_nav_host_fragment);
Button button = view.findViewById(R.id.button_frag1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
navController.navigate(R.id.action_firstFragment_to_secondFragment, bundle);
}
});
No comments:
Post a Comment