Android 导航图在导航上添加额外的片段以堆叠
Android navigation graph add extra fragment to stack on navigation
解法:
接受的答案和@ianhanniballake 的评论都有效。
由于评论的简单性,我将使用评论一!
解法:
我正在尝试以下操作:
导航图中有三个片段
1:仪表板(开始)
2:包含项目的列表
3: 物品详情
用户可以从 1
导航到 2
或直接从 1
导航到 3
以获取几个项目。如果用户从 1
转到 3
我想先回到 2
。
因此,例如:
>
表示栈中向前
<
表示在堆栈中向后移动
case1:先去list的时候
1 > 2 > 3 < 2 < 1
case2:当直接进入详情时
1 > 3 < 2 < 1
这样的事情可能吗?
谢谢!
这可以通过重写可以找到的返回实现来完成 here,并在按下返回时返回到您想要的片段。
我会创建一个新的导航操作,从 Fragment3
开始到 Fragment2
。请务必 select popToInclusive
执行此操作。然后在 Fragment3
中执行以下操作以确保在按下后退时,在 Fragment3
中返回时始终显示 Fragment2
:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val callback: OnBackPressedCallback =
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// Handle the back button event
findNavController().navigate(Fragment3FragmentDirections.actionFragment3ToFragment2())
}
}
requireActivity().onBackPressedDispatcher.addCallback(this, callback)
}
解法: 接受的答案和@ianhanniballake 的评论都有效。 由于评论的简单性,我将使用评论一! 解法:
我正在尝试以下操作:
导航图中有三个片段
1:仪表板(开始)
2:包含项目的列表
3: 物品详情
用户可以从 1
导航到 2
或直接从 1
导航到 3
以获取几个项目。如果用户从 1
转到 3
我想先回到 2
。
因此,例如:
>
表示栈中向前
<
表示在堆栈中向后移动
case1:先去list的时候
1 > 2 > 3 < 2 < 1
case2:当直接进入详情时
1 > 3 < 2 < 1
这样的事情可能吗?
谢谢!
这可以通过重写可以找到的返回实现来完成 here,并在按下返回时返回到您想要的片段。
我会创建一个新的导航操作,从 Fragment3
开始到 Fragment2
。请务必 select popToInclusive
执行此操作。然后在 Fragment3
中执行以下操作以确保在按下后退时,在 Fragment3
中返回时始终显示 Fragment2
:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val callback: OnBackPressedCallback =
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// Handle the back button event
findNavController().navigate(Fragment3FragmentDirections.actionFragment3ToFragment2())
}
}
requireActivity().onBackPressedDispatcher.addCallback(this, callback)
}