【问题标题】:Back Button in ActionBar of App应用ActionBar中的返回按钮
【发布时间】:2018-02-11 22:59:55
【问题描述】:

通常从一个活动切换到另一个活动汉堡图标被替换为后退箭头。我想控制那个箭头的功能。我在这里看到了很多内容,但大多数都与硬件的后退按钮有关。我该如何控制?

我正在尝试片段的功能。我也有带有汉堡图标的导航抽屉。

我试过这个-

if(id == android.R.id.home){
        getSupportFragmentManager().beginTransaction().replace(R.id.main_container, new AmbulanceMap()).commit();
        getSupportActionBar().setTitle("Book A Ride");
        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
    }

但没有像我希望的那样工作。

我希望我的后退按钮将片段更改为上一个片段。

【问题讨论】:

  • 当你创建 onCreateOption 菜单和它的 itemselected ....你可以使用 android.R.id.home id 来控制那个后退按钮。
  • 我试过了,但它不工作它只是打开附加的抽屉。
  • 你添加了getSupportToolbar().setDisplayHomeUpAsEnabled(true);
  • 是的,我做到了.. 除了后退按钮之外,一切都运行良好
  • 您到底想让您的后退按钮做什么?

标签: android android-activity android-actionbar


【解决方案1】:

我曾经遇到过同样的问题。就像你一样,检查 Android.R.id.home 是否被点击之类的东西不起作用。 但我用它解决了它:

将导航监听器设置为工具栏:

toolbar.setToolbarNavigationClickListener(v -> onBackPressed());

如果它应该在片段内:

  1. 在活动中创建公共方法。
  2. 在片段的 onAttach(或更高版本)中,将 getActivity() 转换为您的活动并调用您之前定义的方法。

例子:

// YourActivity
public void setHomeListener(OnLickListener listener){
    toolbar.setToolbarNavigationClickListener(listener);
}

//Fragment's onCreate
((YourActivity)getActivity()).setHomeListener(v -> onBackPressed());

//Fragment's onDestroy
 ((YourActivity)getActivity()).setHomeListener(null);

当然,还可以设置我们的主页以显示返回箭头。

编辑

如果您不使用 labmdas,您应该使用:

(YourActivity)getActivity()).setHomeListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        YourFragment.this.onBackPressed();
    }
});

【讨论】:

  • @ShubhamAgarwalBhewanewala 您需要哪个代码?
  • 设置navigationClick监听器
  • @ShubhamAgarwalBhewanewala,有什么不清楚的地方?在哪里可以找到抽屉切换?
  • 当我设置监听器时,它只允许我添加点击监听器
  • @ShubhamAgarwalBhewanewala 您确定将侦听器设置为 ActionBarDrawerToggle 的实例吗?因为它有这个方法。
【解决方案2】:

ActionBar 的后退按钮是一个 menuItem,因此您需要像这样覆盖 onOptionsItemSelected:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case android.R.id.home:
            //Your back button logic here
            break;
    }
    return true;
}

另外不要忘记在设置工具栏后添加getSupportActionBar().setDisplayHomeAsUpEnabled(true);

【讨论】:

  • 我试过了,但它不工作它只是打开附加的抽屉。
  • 能否复制包含该工具栏的 Activity 代码?
  • 我不明白你。你到底想看什么?我可以发帖。
  • 我想看看你的Activity的代码。
猜你喜欢
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多