导航组件:如何从活动导航到片段 [英] Navigation Component: how to navigate from activity to a fragment

查看:67
本文介绍了导航组件:如何从活动导航到片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要在(活动)中的"FAB"上单击导航至新建片段1".

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

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

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>

要求:如果我单击fab按钮,则只需导航到片段"navigation_report"即可.在图中

requirement: if I click on fab button just navigate to fragment "navigation_report" which is in the graph

推荐答案

MainActivity:XML 单击fab按钮时,导航到新片段

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建议我对此采取任何更好的解决方案.

// 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>

这篇关于导航组件:如何从活动导航到片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆