Yas*_*imi 5 navigation android kotlin android-architecture-components android-jetpack
我正在制作一个简单的笔记应用程序,我有 2 个带有导航组件的片段,一个片段有一个笔记列表,另一个片段用于编辑或创建新笔记。
在MainActivity
我添加
val navController = this.findNavController(R.id.host_fragment)
NavigationUI.setupActionBarWithNavController(this, navController)
Run Code Online (Sandbox Code Playgroud)
然后覆盖 onSupportNavigateUp()
override fun onSupportNavigateUp(): Boolean {
val navController = this.findNavController(R.id.host_fragment)
return navController.navigateUp()
}
Run Code Online (Sandbox Code Playgroud)
在 NoteEditFragment
requireActivity().onBackPressedDispatcher.addCallback(this) {
saveOrUpdateNote(noteId, note)
}
Run Code Online (Sandbox Code Playgroud)
现在按下设备中的“后退按钮”时一切正常,但是onBackPressedDispatcher.addCallback()
当我按下屏幕左上角的“向上按钮”时会触发注释。
我的问题是:如何从我的NoteEditFragment
?
提前致谢
最后,我找到了解决方案。
首先在activity
onCreate
我必须像我一样连接导航的方法中:
val navController = this.findNavController(R.id.host_fragment)
NavigationUI.setupActionBarWithNavController(this, navController)
Run Code Online (Sandbox Code Playgroud)
然后仍然在MainActivity
覆盖onSupportNavigateUp()
:
override fun onSupportNavigateUp(): Boolean
{
val navController = this.findNavController(R.id.host_fragment)
return navController.navigateUp()
}
Run Code Online (Sandbox Code Playgroud)
然后在Fragment
onCreateView
我必须启用选项菜单中:
setHasOptionsMenu(true)
Run Code Online (Sandbox Code Playgroud)
然后在fragment
我覆盖onOptionsItemSelected
:
override fun onOptionsItemSelected(item: MenuItem): Boolean
{
// handle the up button here
return NavigationUI.onNavDestinationSelected(item!!,
view!!.findNavController())
|| super.onOptionsItemSelected(item)
}
Run Code Online (Sandbox Code Playgroud)
注意:我认为如果您有多个选项菜单,那么我认为您必须做一个when (item)
声明来检查已选择的选项。
此外,如果您想处理设备后退按钮,那么您可以在您的fragment
onCreateViewMethod
:
requireActivity().onBackPressedDispatcher.addCallback(this)
{
// handle back button
// change this line to whatever way you chose to navigate back
findNavController().navigate(NoteEditFragmentDirections.actionNoteEditFragmentToNoteListFragment())
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2782 次 |
最近记录: |