【问题标题】:Perform an action on press of back arrow in navigation ui在导航 ui 中按后退箭头执行操作
【发布时间】:2021-11-06 20:25:30
【问题描述】:

我正在使用具有单个活动的导航 UI。在一个特定的片段中,我想在单击工具栏上的箭头键时执行一个操作。工具栏目前可以工作(将用户带回上一个片段),但我想在此之前执行一个操作(该操作甚至可能是不回到上一个片段)。

【问题讨论】:

  • 工具栏是通用的吗(属于活动,下面的片段正在替换)?还是每个片段都有自己的工具栏?它是自定义工具栏还是默认工具栏?
  • 检查here
  • @Geekybean 工具栏在所有片段之间共享。我有一个拥有工具栏的活动,并且片段被简单地插入到活动中的容器布局中
  • @Zain 单击向上箭头不会触发对 optionitemselected 的任何调用。这是我的导航 ui 代码:AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(topLevelDestinations) .setOpenableLayout(drawerLayout) .build(); setSupportActionBar(toolbar); NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration); NavigationUI.setupWithNavController(navigationView, navController);
  • @ZiyaadShiraz 你有没有在有这个向上箭头的片段中添加setHasOptionsMenu(true)?

标签: android back android-navigationview


【解决方案1】:

解决方案原来是在工具栏实例上使用setNavigationOnClickListener,检查您所在的目的地是否与您希望具有该自定义行为的目的地相匹配,如果是,您在那里执行自定义操作,如果不是,您正常向上导航。这是代码sn-p:

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (navController.getCurrentDestination().getId() == R.id.addPersonalNoteFragment) {
                    System.out.println("do what ever you want to do on the back arrow press here");
                             } else {
                    NavigationUI.navigateUp(navController, appBarConfiguration);
                }
            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多