应用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中的返回按钮的主要内容,如果未能解决你的问题,请参考以下文章