应用ActionBar中的返回按钮

Posted

技术标签:

【中文标题】应用ActionBar中的返回按钮【英文标题】:Back Button in ActionBar of App 【发布时间】: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); 是的,我做到了.. 除了后退按钮之外,一切都运行良好 您到底想让您的后退按钮做什么? 【参考方案1】:

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

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

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

如果它应该在片段内:

    在活动中创建公共方法。 在片段的 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的代码。

以上是关于应用ActionBar中的返回按钮的主要内容,如果未能解决你的问题,请参考以下文章

将返回按钮添加到操作栏

程序活动主页按钮返回上一个活动

android 为啥没有actionbar

Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮

ActionBar后退按钮崩溃我的应用程序

ActionBar Android Appcelerator中的后退按钮[复制]