android - 应用程序 ActionBar 中的后退按钮

标签 android android-activity android-actionbar

通常从一个 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 内:

  1. 在 Activity 中创建一个公共(public)方法。
  2. 在 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/

相关文章:

java - 调用removeCallbacksAndMessages(null)后处理程序不会结束

java - 尝试使用 JSON 填充微调器并在空对象引用上获取 'java.lang.Object[] java.util.Collection.toArray()'

android - 将图像馈送到 android 模拟器相机

android - 带 Activity 和子 fragment 的抽屉导航

android - 让 DrawerLayout 在 ActionBar 上滑动

android - 操作栏 : setting button not appear in actionbar on samsung device

android - 如何知道gradlescript使用哪个版本来构建android应用

android - 如何链接键盘上的按钮以启动新屏幕?

java - 多个 Activity 的相同 Intent 过滤器

android - 如何完全删除 ActionBar 中的选项卡指示器