android - 导航到目的地的弹出片段
问题描述
我有这样的容器活动:
<fragment
android:id="@+id/nav_host_container"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/my-graph-name" />
我的活动也是这样配置的:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
NavigationUI.setupActionBarWithNavController(
this,
findNavController(R.id.nav_host_container)
)
}
override fun onSupportNavigateUp(): Boolean {
return findNavController(R.id.nav_host_container).navigateUp()
}
我的图表有 startDestination 一个带有动作的片段:
<action
android:id="@+id/action1"
app:popUpTo="@+id/my1stFragment"
app:popUpToInclusive="true"
app:destination="@+id/my2ndFragment" />
问:为什么当我点击 my2ndfragment 工具栏的“向上”按钮时,我的图表基本上是从头开始的?我希望这样的行动能够结束活动。
解决方案
根据Android文档:
如果用户位于应用程序的起始目的地,则向上按钮不会出现,因为向上按钮永远不会退出应用程序。但是,后退按钮会显示并退出应用程序。
当您的应用程序使用另一个应用程序任务的深层链接启动时,Up 会将用户转换回您的应用程序的任务并通过模拟的返回堆栈,而不是触发深层链接的应用程序。但是,“后退”按钮确实会将您带回另一个应用程序。
推荐阅读
- go - 不太懂 goroutines 和 channels,请分解这段代码
- spring-cloud - 如何将自定义 ContractConverter 传递给 Spring Cloud 合约 docker 镜像
- c# - System.Text.Json.JsonSerializer.Serialize 返回空 Json 对象“{}”
- intellij-idea - 一个文件中的 intellij 导航(后退/前进)
- java - 矩阵中的递归最长增加路径
- javascript - 如何检测 chrome “runtime.lastError: Serial connection not found”?
- command-line - 如何为 msbuild 指定 AdditionalLibraryDirectories?
- r - 使用间隔来确定日期列是否在其他日期的向量内
- mysql - SQL查询字符串只有一个字符的差异
- java - 如何从服务器获取数据并在 Android 上填充 SQL 数据库?