java - 如何在android中自定义导航?

标签 java android android-actionbar

我不想让操作栏中的向上导航返回到其父 Activity ,而是希望它返回到最后一个 fragment ,或者只是能够更改其行为和外观。

如何实现这一目标?

最佳答案

你可以尝试这个:向上导航与任何其他菜单项没有什么不同,除了就 id 而言它是特殊的:

让我添加一些代码来演示如何更改图标:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

assert toolbar != null;
toolbar.setNavigationIcon(R.drawable.close);

处理 fragment 弹出:

//when adding your fragment to the activity, add it to back stack like this
fragmentTransaction.addToBackStack("frag1");

//inside onOptionsItemSelected(MenuItem item)
switch(item.getId()){
   case android.R.id.home:
   FragmentManager fm = getActivity().getSupportFragmentManager();
   fm.popBackStack ("frag1", FragmentManager.POP_BACK_STACK_INCLUSIVE);
   return true;
}

您可以从返回堆栈中删除 fragment

您还可以通过在 onCreate 中设置不同的资源来更改图标!

更新

由于 fragment 始终存在于 Activity 内,因此您不必更改 fragment 中的任何内容,但如果您希望 fragment 具有更多菜单项(如右侧),您可以在 onCreate() 中启用 optionsMenu像这样:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setHasOptionsMenu(true);

}

从这里,您可以像平常在 Activity 中那样做!

希望这会有所帮助!

关于java - 如何在android中自定义导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294582/

相关文章:

java - 为什么我的 Eclipse 编辑器没有显示错误,但是当我尝试运行该文件时,它显示 "cannot be resolved to a type"错误?

java - 将图像保存到 sqlite 数据库后图像不显示

java - 在android中删除ListView(cab)中的多个选定项目

java - 在递归函数中参数值根据向下递归值而变化

java - Thymeleaf 提交抽象类型的集合

java - 火力地堡用户界面 : Solution to receive all keys from a child and use it to receive information from another node and fill it in a Recyclerview?

android - 使用 TextInputLayout 时更改 EditText textAllCaps

android - getSupportActionBar 可以在 setSupportActionBar 之后立即为 null 吗?

android - 让抽屉导航滑到工具栏/操作栏下方

java - 更改操作栏标题字体和颜色