我不想让操作栏中的向上导航返回到其父 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/