使用导航时如何转到上一个片段

时间:2020-09-08 04:47:43

标签: android kotlin

我现在正处于signupfragment,需要进入loginfragment,这是我以前的片段,但无法正常工作

git config --global -l

3 个答案:

答案 0 :(得分:1)

popBackStack(R.id.signupfragment,false)的第二个参数是popUpToInclusive

popUpToInclusive:布尔值:是否还应该弹出给定的目的地。

如果您使用popUpToInclusive中的false,则表示“将所有内容弹出到R.id.signupfragment,但不是R.id.signupfragment

因此,如果您在R.id.signupfragment,它将正确弹出任何内容(并返回false)。您想要1)对true使用popUpToInclusive或2)使用不带任何参数的popBackStack()版本,因为这等效于仅弹出当前目的地后堆栈:

requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
    Log.e("BackPressed","Onbackpressed")
    findNavController().popBackStack()
}

当然,导航已经已将后退按钮设置为在您按下后退按钮时呼叫popBackStack(),因此,除了进行额外的记录外,您的通话也完全没有必要。

答案 1 :(得分:0)

另一种轻松实现此目的的方法是放回测试按钮并对其进行编码。

value

答案 2 :(得分:0)

我不知道它的好答案,但是可以正常工作

findNavController().popBackStack()
findNavController().popBackStack()  
findNavController().navigate(R.id.loginFragment)