当前位置: 首页 > 知识库问答 >
问题:

Android导航组件ActionBar Up/Parent事件处理

林浩漫
2023-03-14

所以我在我的应用程序中使用Android导航,我遇到了这样的情况:

我有2个碎片A-

我遵循这个答案,得到了这个解决方案

// code on fragment B's onViewCreated()
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
    alert("Are you sure to quit?")
}

当我按下硬件后退按钮时,这个解决方案工作得很好,但是当我按下工具栏上的后退按钮时,回调不会被调用。请帮帮我,谢谢。

这是我的MainActive的导航设置:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    supportActionBar!!.setDisplayHomeAsUpEnabled(true)

    navController = findNavController(R.id.nav_host_fragment_container)
    appBarConfiguration = AppBarConfiguration(navController.graph)
    setupActionBarWithNavController(navController, appBarConfiguration)
}

override fun onSupportNavigateUp(): Boolean {
    return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    return item.onNavDestinationSelected(navController) || super.onOptionsItemSelected(item)
}

共有2个答案

简学文
2023-03-14

您需要添加以下代码-

override fun onSupportNavigateUp(): Boolean {
    alert("Are you sure to quit?")
    return false
}
白博赡
2023-03-14

在片段B中的创建视图启用选项菜单

setHasOptionsMenu(true)

并覆盖选项ItemSelected

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if (item.itemId == android.R.id.home) { // ActionBar back/parent button is pressed
        // onBackPressed() // to return back to Fragment A
    }
    return true
}
 类似资料:
  • 我正在一个新的Android应用程序上使用导航组件,但我不知道怎么做 首先,我有我的主活动,我有main_navigation_graph 主要活动 NavHostFragment main_navigation_graph里面有3个碎片 这里一切都很好。问题是当我到达最后一个片段时,因为在这个片段上,我想根据BottomNavigationView输入(暂时)显示一些子片段(在新的NavHost

  • 导航组件说明 组件 说明 最低版本 navigator 页面链接 1.0.0 functional-page-navigator 用于跳转插件功能页 不支持 navigator 属性 类型 默认值 必填 说明 最低版本 url string 否 当前小程序内的跳转链接 open-type navigate 否 跳转方式 hover-class string navigator-hover 否 指定

  • 我想知道如何使用导航控制器正确处理系统后退按钮动作。在我的应用程序中,我有两个片段(例如,fragment1和fragment2),我在fragment1中有一个操作,目标是fragment2。除了一件事之外,所有的工作都很好--当用户按下fragment2中的system back按钮时,我希望显示一个对话框(例如使用DialogFragment)来确认退出。实施这种行为的最佳方式是什么?如果我

  • 我正在使用Android导航组件(目前为v2.1.0),我正在尝试解决如何最好地处理需要自己的BottomNavigationView的子屏幕,MainActivity已经有了顶级的BottonNavigationview。 Google似乎真的提倡在大多数情况下使用单一活动架构。以下是我目前的情况: 这带来了一些问题。首先,我得展示一下 这感觉真的很笨拙,有点笨拙,并且开始在MainActivi

  • 本文向大家介绍Android组件创建DrawerLayout导航,包括了Android组件创建DrawerLayout导航的使用技巧和注意事项,需要的朋友参考一下 概述 本篇博客是对developer.android.com/上的Training课程的简单翻译,若是觉得翻译出来的理解有困难,请点击下方链接查看原文! 关于DrawerLayout的Training:http://developer.

  • 我已经从连接到NavController的导航抽屉中导航到了DialogFragment。但当我导航到另一个目标时,我已经将弹出窗口设置为包含对话框片段,但它并没有清除堆栈。如何清除堆栈? AM从LogoutDialog调用此方法 我只使用片段和一个活动。 这是我导航图的一部分