深度 link 导航到父级 activity 不适用于导航架构组件显式深度 link
Deep link navigating to parent activity does not work with navigation architecture component explicit deep link
我有一个配置文件 activity 和 MainActivity,它是配置文件 Activity 的父级。我有一个没有 ui 的通用 activity 来处理使用显式 deep links
的 deep links 重定向
清单文件
<activity
android:name=".ui.profile.ProfileActivity"
android:screenOrientation="portrait"
android:parentActivityName="com.peoplemesh.now.ui.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.MainActivity" />
</activity>
深linkactivity代码
val pendingIntent = NavDeepLinkBuilder(this)
.setGraph(R.navigation.profile_nav)
.setDestination(R.id.profileFrag)
.setArguments(bundle)
.setComponentName(ProfileActivity::class.java)
.createPendingIntent()
pendingIntent.send(0)
个人资料屏幕
navController.setGraph(R.navigation.profile_nav, bundle)
val appBarConfiguration = AppBarConfiguration(
topLevelDestinationIds = setOf(),
fallbackOnNavigateUpListener = ::onSupportNavigateUp
)
mBinding.toolbar.setupWithNavController(navController, appBarConfiguration)
深入 link 到配置文件Activity -> 向上导航 -> 关闭应用程序(因为堆栈中没有 activity)。
我该如何解决这个问题?
更新:
不确定这是否有帮助或报告了类似问题https://issuetracker.google.com/issues/142379671?pli=1
好的。在放置调试断点并浏览框架代码后,我找到了答案。看来这是一个错误。
我所做的是覆盖默认行为。来源 - NavUtils.navigateUpTo() does not start any Activity
override fun onSupportNavigateUp(): Boolean {
val upIntent = NavUtils.getParentActivityIntent(this)
if (NavUtils.shouldUpRecreateTask(this, upIntent!!) || isTaskRoot) {
TaskStackBuilder.create(this)
.addNextIntentWithParentStack(upIntent)
.startActivities()
} else {
NavUtils.navigateUpTo(this, upIntent!!)
}
return true
}
这确实有效
我也有这个
val appBarConfiguration = AppBarConfiguration(
topLevelDestinationIds = setOf(),
fallbackOnNavigateUpListener = ::onSupportNavigateUp
)
toolbar
.setupWithNavController(navController, appBarConfiguration)
我有一个配置文件 activity 和 MainActivity,它是配置文件 Activity 的父级。我有一个没有 ui 的通用 activity 来处理使用显式 deep links
的 deep links 重定向清单文件
<activity
android:name=".ui.profile.ProfileActivity"
android:screenOrientation="portrait"
android:parentActivityName="com.peoplemesh.now.ui.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.MainActivity" />
</activity>
深linkactivity代码
val pendingIntent = NavDeepLinkBuilder(this)
.setGraph(R.navigation.profile_nav)
.setDestination(R.id.profileFrag)
.setArguments(bundle)
.setComponentName(ProfileActivity::class.java)
.createPendingIntent()
pendingIntent.send(0)
个人资料屏幕
navController.setGraph(R.navigation.profile_nav, bundle)
val appBarConfiguration = AppBarConfiguration(
topLevelDestinationIds = setOf(),
fallbackOnNavigateUpListener = ::onSupportNavigateUp
)
mBinding.toolbar.setupWithNavController(navController, appBarConfiguration)
深入 link 到配置文件Activity -> 向上导航 -> 关闭应用程序(因为堆栈中没有 activity)。
我该如何解决这个问题?
更新:
不确定这是否有帮助或报告了类似问题https://issuetracker.google.com/issues/142379671?pli=1
好的。在放置调试断点并浏览框架代码后,我找到了答案。看来这是一个错误。
我所做的是覆盖默认行为。来源 - NavUtils.navigateUpTo() does not start any Activity
override fun onSupportNavigateUp(): Boolean {
val upIntent = NavUtils.getParentActivityIntent(this)
if (NavUtils.shouldUpRecreateTask(this, upIntent!!) || isTaskRoot) {
TaskStackBuilder.create(this)
.addNextIntentWithParentStack(upIntent)
.startActivities()
} else {
NavUtils.navigateUpTo(this, upIntent!!)
}
return true
}
这确实有效
我也有这个
val appBarConfiguration = AppBarConfiguration(
topLevelDestinationIds = setOf(),
fallbackOnNavigateUpListener = ::onSupportNavigateUp
)
toolbar
.setupWithNavController(navController, appBarConfiguration)