【问题标题】:Actionbar back button functionality not changing操作栏后退按钮功能不变
【发布时间】:2017-11-02 05:25:55
【问题描述】:

我有一个片段 A,另一个片段 B 从中加载。在片段 A 操作栏中,我有一个汉堡菜单,当我移动到片段 B 时,它应该更改为后退菜单按钮。当加载后退按钮时,菜单的功能应该从加载抽屉布局的汉堡菜单更改为加载以前的 Fragment IE 的后退按钮菜单。片段 B. 我可以将菜单的图标从汉堡更改为后退按钮,但是在加载后退按钮时我无法更改图标的功能。

我正在通过以下代码更改片段 B 中操作栏中的按钮

MainActivity.mDrawerToggle.setDrawerIndicatorEnabled(true);

任何人都可以通过建议一种方法来帮助我,在加载片段 B 时更改菜单按钮的功能,并将后退按钮的图标和功能重置为汉堡菜单,导航回片段 A

【问题讨论】:

  • 你尝试过drawerLayout.post(new Runnable() { @Override public void run() {drawToggle.syncState(); getSupportActionBar().setHomeAsUpIndicator(R.drawable.menu_white); } }) ;
  • 你可以检查 Fragment 是否在堆栈中,然后像 getSupportFragmentManager().popBackStack(); 那样删除。

标签: android menu android-actionbar


【解决方案1】:

您可以为导航点击设置监听器

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //add here the action you need
                //example call on back pressed of activity or call 
                getSupportFragmentManager().popBackStack();
                onBackPressed(); 

            }
        });

【讨论】:

    【解决方案2】:

    当图标改变时,如果当前图标是返回按钮,则使用getSupportFragmentManager().popBackStack();

    并在NavigationOnClickListener中使用如下逻辑

    if(condition for changing the icon) //for eg : check for current fragment is home or not
    { 
       getSupportFragmentManager().popBackStack();
       mDrawer.closeDrawers();
    }
    

    希望这对您有用。快乐编码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      相关资源
      最近更新 更多