不使用单一的导航架构 Activity

Navigation architecture not using single Activity

我已经实现了 Navigation Architecture 框架来显示几个片段。不幸的是,每个片段都在创建一个新的 activity。 所以我用 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 开始了 Activityintent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) 标志,但它们并没有多大帮助,因为仅在第一次显示后使用它们不会显示任何片段。

nav_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"
        android:id="@+id/notification_nav_graph"
        app:startDestination="@id/openingNotificationFragment">
        <fragment
            android:id="@+id/standByScreenFragment"
            android:name="com.emaz.android.ui.notification.standby.StandByScreenFragment"
            android:label="StandByScreenFragment" />
        <fragment
            android:id="@+id/welcomeNotificationFragment"
            android:name="com.emaz.android.ui.notification.welcome.WelcomeNotificationFragment"
            android:label="WelcomeNotificationFragment" />
        <fragment
            android:id="@+id/openingNotificationFragment"
            android:name="com.emaz.android.ui.notification.ingress..OpeningNotificationFragment"
            android:label="OpeningFragment" />
        <fragment
            android:id="@+id/closingNotificationFragment"
            android:name="com.emaz.android.ui.notification.ingress..ClosingNotificationFragment"
            android:label="ClosingNotificationFragment" />
    </navigation>

主页活动

的身份调用 NotificationActivity
val intent = Intent(this, NotificationActivity::class.java)
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
                startActivity(intent)

NotificationActivity 并将片段称为

notification_container.visibility = View.GONE
            fragment_layout.visibility = View.VISIBLE
            val navController = Navigation.findNavController(this, nav_host_fragment.id)

            navController.popBackStack()
            Log.e("nav", "${navController.currentDestination} and $resId < ResourceId")

            navController.navigate(resId, null)

我可以看到 resId 发生变化,但在屏幕上看不到。 请帮忙

我解决了多个 activity 创建问题。对于面临同样问题的其他人。如果您尝试使用导航架构导航到片段,请确保该应用程序不在后台。

保持应用程序处于活动状态不会创建 activity 的新实例,应用程序将按预期运行。