应用程序 ActionBar 中的后退按钮
Back Button in ActionBar of App
通常从一个 activity 切换到另一个 activity 汉堡包图标被后退箭头代替。我想控制那个箭头的功能。我在这里看到了很多内容,但大多数都与硬件的后退按钮有关。我该如何控制它?
我正在尝试片段情况下的功能。我还有带有汉堡包图标的导航抽屉。
我试过了-
if(id == android.R.id.home){
getSupportFragmentManager().beginTransaction().replace(R.id.main_container, new AmbulanceMap()).commit();
getSupportActionBar().setTitle("Book A Ride");
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
但没有像我希望的那样工作。
我想要我的后退按钮将片段更改为上一个片段。
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);
我曾经遇到过同样的问题。就像您一样,检查 Android.R.id.home 是否被点击之类的操作不起作用。
但我用它解决了它:
将导航侦听器设置为工具栏:
toolbar.setToolbarNavigationClickListener(v -> onBackPressed());
如果它应该在片段内:
- 在 activity 中创建一个 public 方法。
- 在片段的 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();
}
});
通常从一个 activity 切换到另一个 activity 汉堡包图标被后退箭头代替。我想控制那个箭头的功能。我在这里看到了很多内容,但大多数都与硬件的后退按钮有关。我该如何控制它?
我正在尝试片段情况下的功能。我还有带有汉堡包图标的导航抽屉。
我试过了-
if(id == android.R.id.home){
getSupportFragmentManager().beginTransaction().replace(R.id.main_container, new AmbulanceMap()).commit();
getSupportActionBar().setTitle("Book A Ride");
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
但没有像我希望的那样工作。
我想要我的后退按钮将片段更改为上一个片段。
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);
我曾经遇到过同样的问题。就像您一样,检查 Android.R.id.home 是否被点击之类的操作不起作用。 但我用它解决了它:
将导航侦听器设置为工具栏:
toolbar.setToolbarNavigationClickListener(v -> onBackPressed());
如果它应该在片段内:
- 在 activity 中创建一个 public 方法。
- 在片段的 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();
}
});