通常从一个 Activity 切换到另一个 Activity 汉堡包图标被后退箭头代替。我想控制那个箭头的功能。我在这里看到了很多内容,但大多数都与硬件的后退按钮有关。我该如何控制它?
我正在尝试 fragment 情况下的功能。我还有带有汉堡包图标的抽屉导航。
我试过了-
if(id == android.R.id.home){
getSupportFragmentManager().beginTransaction().replace(R.id.main_container, new AmbulanceMap()).commit();
getSupportActionBar().setTitle("Book A Ride");
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
但没有像我希望的那样工作。
我希望我的后退按钮将 fragment 更改为上一个 fragment 。
最佳答案
我曾经遇到过同样的问题。就像您一样,检查是否单击了 Android.R.id.home 之类的操作不起作用。 但我用它解决了它:
将导航监听器设置为工具栏:
toolbar.setToolbarNavigationClickListener(v -> onBackPressed());
如果它应该在 fragment 内:
- 在 Activity 中创建一个公共(public)方法。
- 在 fragment 的 onAttach(或更高版本)中将 getActivity() 转换为您的 Activity 并调用您之前定义的方法。
例子:
// 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();
}
});
关于android - 应用程序 ActionBar 中的后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46024625/