我正在构建一个notes应用程序,基本上是keep notes的克隆,我想在用户从createNotesFragment按下back按钮时保存笔记,并从堆栈中弹出片段以移回homeFragment。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requireActivity()
.onBackPressedDispatcher
.addCallback(this) {
saveNote()
activity?.supportFragmentManager?.popBackStack()
}
}
从homeFragmet的导航工作正常,但当我试图移回createNotesFragment时添加了一个音符后,它向我显示了这个错误。
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.lavanianotesapp, PID: 7351
java.lang.IllegalArgumentException: Navigation action/destination com.example.lavanianotesapp:id/action_homeFragment_to_createNotesFragment cannot be found from the current destination Destination(com.example.lavanianotesapp:id/createNotesFragment) label=fragment_create_notes class=com.example.lavanianotesapp.UI.Fragments.CreateNotesFragment
at androidx.navigation.NavController.navigate(NavController.kt:1540)
我不明白在弹出BackStack之前它工作正常,但在弹出片段之后它就不工作了。
先谢了。
1条答案
按热度按时间lo8azlld1#
在为一位客户开发聊天应用程序时,我找到了自己问题的答案。
navController在currentDestination没有找到导航的原因是因为它在弹出堆栈后不知何故没有更新currentDestination,它仍然认为currentDestination是createNotesFragment,并且由于没有从createNotesFragment移动到相同creatNotesFragment的操作,它显示了错误。创建NavController的扩展函数,如下所示:
用法: