【问题标题】:Navigation Components - onSupportNavigateUp()导航组件 - onSupportNavigateUp()
【发布时间】:2019-07-24 16:36:12
【问题描述】:

真的有必要打电话吗

override fun onSupportNavigateUp() = findNavController(R.id.nav_host_fragment).navigateUp()

在我的 MainActivity 中?

因为当我在我的 xml 中附加 NavHostFragment 时,它从那里开始,但我已经看过 Google I/O 讲座,他们使用它作为导航的起点

我的问题

需要在哪里使用?

谢谢

【问题讨论】:

    标签: android android-fragments kotlin android-navigation android-architecture-navigation


    【解决方案1】:

    onSupportNavigateUp 来自AppCompatActivity。您应该在定义 NavHostFragment 的同一活动中覆盖该方法(可能是您的 MainActivity)。您覆盖它,以便NavigationUI 可以正确支持向上导航甚至抽屉布局菜单。 AppCompatActivityNavigationUI 是两个独立的组件,因此您需要重写该方法以连接两者。请注意,如果您使用导航组件设置工具栏,即,如果您执行类似于

    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 会自动处理点击事件。

    如果您想自己处理工具栏,也不需要覆盖它。

    【讨论】:

    • 我暂时没有工具栏,我的问题是它是否是实现它的问题,因为没有它,代码也一样
    • @CoffeeBreak 然后不,没有必要实现它。当您有一个工具栏并希望导航组件为您处理向上按钮导航时,您将需要它。
    • 这就是我困惑的地方,哪个是向上按钮?我只知道工具栏中的主页按钮或返回按钮
    • 哈哈是的,我知道,这有点奇怪。它被称为“向上”,因为当您按下它时,您将在视图层次结构中“向上”:)
    • 我们如何在 Fragment 而不是主 Activity 中进行设置?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多