I want to navigate on click FAB in (activity) to New fragment 1.
in my code fab button in the main activity common for all pages. could anyone guide me?
activity.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/mobile_navigation" />
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:navigationIcon="@drawable/ic_baseline_dashboard_24"
app:navigationContentDescription="Navigation icon"
/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_anchor="@id/bottomAppBar"
android:backgroundTint="@color/colorPrimary"
style="@style/Widget.App.FloatingActionButton"
app:srcCompat="@drawable/menu_bug" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
graph.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/mobile_navigation"
app:startDestination="@+id/navigation_home">
<fragment
android:id="@+id/navigation_home"
android:name="com.androidfeby.bugreport.ui.home.HomeFragment"
android:label="@string/title_home"
tools:layout="@layout/fragment_home" />
<fragment
android:id="@+id/navigation_report"
android:name="com.androidfeby.bugreport.ui.report.FragmentReport"
android:label="@string/title_dashboard"
tools:layout="@layout/fragment_report" />
<fragment
android:id="@+id/navigation_notifications"
android:name="com.androidfeby.bugreport.ui.history.NotificationsFragment"
android:label="@string/title_notifications"
tools:layout="@layout/fragment_notifications" />
</navigation>
requirement: if I click on fab button just navigate to fragment "navigation_report" which is in the graph
If you want to go back from Activity to Fragment. This is very simple just override onBackPressed() in your activity and call onBackPressed where you want.
A fragment is Attached to an activity, you can Add a fragment or Replace a fragment with FragmentTransition. Note that a fragment need an activity to exist ! You don't go from activity to fragment... But if you are in an activity that contain a fragment you can open a new activity on top of the first.
MainActivity : XML navigate to a new fragment, when on click fab button
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/mobile_navigation" />
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:navigationIcon="@drawable/ic_dashboard_svgrepo_com"
app:navigationContentDescription="Navigation icon"
/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_anchor="@id/bottomAppBar"
android:backgroundTint="@color/colorPrimary"
style="@style/Widget.App.FloatingActionButton"
app:srcCompat="@drawable/menu_bug" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
MainActivity : KT
val navController = findNavController(R.id.nav_host_fragment)
// MainActivity : onCreate
// in my code fab button in the main activity common for all fragment.
floatingActionButton.setOnClickListener {
navController.navigateUp() // to clear previous navigation history
navController.navigate(R.id.new_issue)
}
// plz suggest me any better solution on this.
mobile_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/mobile_navigation"
app:startDestination="@+id/home">
<fragment
android:id="@+id/home"
android:name="com.androidfeby.bugreport.FragmentHome"
android:label="@string/title_home"
tools:layout="@layout/fragment_home" >
</fragment>
<fragment
android:id="@+id/new_issue"
android:name="com.androidfeby.bugreport.FragmentNewIssue"
android:label="@string/title_dashboard"
tools:layout="@layout/fragment_report" />
<fragment
android:id="@+id/history"
android:name="com.androidfeby.bugreport.FragmentHistory"
android:label="@string/title_notifications"
tools:layout="@layout/fragment_notifications" />
</navigation>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With