不使用单一的导航架构 Activity
Navigation architecture not using single Activity
我已经实现了 Navigation Architecture
框架来显示几个片段。不幸的是,每个片段都在创建一个新的 activity。
所以我用 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
开始了 Activity
和 intent.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 的新实例,应用程序将按预期运行。
我已经实现了 Navigation Architecture
框架来显示几个片段。不幸的是,每个片段都在创建一个新的 activity。
所以我用 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
开始了 Activity
和 intent.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 的新实例,应用程序将按预期运行。