android - 导航组件 - onSupportNavigateUp()
问题描述
真的有必要打电话吗
override fun onSupportNavigateUp() = findNavController(R.id.nav_host_fragment).navigateUp()
在我的 MainActivity 中?
因为当我在我的 xml 中附加 NavHostFragment 时,它从那里开始,但我已经看过 Google I/O 讲座,他们使用它来作为导航的起点
我的问题
有必要在哪里使用它?
谢谢
解决方案
onSupportNavigateUp
来自AppCompatActivity
. 您应该在定义您的NavHostFragment
(可能是您的 MainActivity)的同一活动中覆盖该方法。您覆盖它,以便NavigationUI
可以正确支持向上导航甚至抽屉布局菜单。AppCompatActivity
和NavigationUI
是两个独立的组件,因此您重写该方法以连接两者。请注意,如果您使用导航组件设置工具栏,即,如果您执行类似的操作
override fun onCreate(savedInstanceState: Bundle?) {
setContentView(R.layout.activity_main)
// ...
val navController = findNavController(R.id.nav_host_fragment)
val appBarConfiguration = AppBarConfiguration(navController.graph)
findViewById<Toolbar>(R.id.toolbar).setupWithNavController(navController, appBarConfiguration)
}
您不需要重写该onSupportNavigationUp
方法,因为 Navigation 会自动处理点击事件。
如果您想自己处理工具栏,也不需要覆盖它。
推荐阅读
- angular - 修复github项目下载的任何想法
- c# - 关于 C# 抓取项目的抓取问题
- c# - 使用 Automapper 将视图模型映射到模型导致实体框架删除孙行
- r - R中的双重采样方法
- javascript - 无法使用 React Reducer 更新特定状态
- firebase - Flutter/Firestore:“QuerySnapshot”类没有实例获取器“document”
- csv - 是否可以在 TSQL 中有 2 个嵌套的枢轴函数
- html - 有些图片没有出现在我的 github 页面组合中
- reactjs - 错误 R10(引导超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT
- laravel - Laravel Passport:如何正确设置功能测试?