0

我有一个配置文件活动和 MainActivity,它是配置文件活动的父项。我有一个没有 ui 的共同活动来使用显式深层链接处理深层链接重定向

清单文件

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

深层链接活动代码

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)

ProfileActivity 的深层链接 -> 向上导航 -> 关闭应用程序(因为堆栈中没有活动)。

我该如何解决?。

更新:

不确定这是否有任何帮助或报告的类似问题https://issuetracker.google.com/issues/142379671?pli=1

4

1 回答 1

0

行。在放置调试断点并浏览框架代码后,我找到了答案。似乎这是一个错误。

我所做的是覆盖默认行为。来源 - NavUtils.navigateUpTo() 不启动任何活动

    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)
于 2022-03-05T14:56:06.180 回答