使用 Activity 的工具栏从 Fragment 向上导航
Use Activity's toolbar to Navigate up from Fragment
在我的应用程序中,MainActivity 使用导航抽屉来托管多个片段。 MainActivity提供工具栏,片段内容以Frame Layout显示在工具栏下方。
在 MainActivity 中,我开始我的第一个片段并初始化我的工具栏,如下所示。
fragmentManager.beginTransaction().replace(R.id.content_frame, new FirstFragment()).commit();
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Fragment 1");
我的一个片段需要一个子片段。我想向该子片段添加一个后退按钮,并在 MainActivity 中覆盖 onBackPressed()。
我的工具栏目前只显示 3 行汉堡包,按下它会打开导航抽屉并显示我的片段列表。
我不确定如何在我的子片段中显示后退箭头而不是汉堡包。然后我需要捕获 onBackPressed() 事件并处理它。
我可能做错了,可能应该使用活动而不是片段,但如果我这样做,我将无法为片段 slide_in / slide_out 转换设置动画。工具栏会随着框架布局滑动,我不希望这样。
我希望片段内容显示过渡,而工具栏保持不变。正如您在 View Pager 中所期望的那样。
如有任何建议,我将不胜感激。
谢谢!
您可以更改 "home icon" 调用这些行:
getSupportActionBar().setHomeAsUpIndicator(R.drawable.your_arrow_icon);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
要处理 "home click",您必须覆盖 onOptionsItemSelected 并处理主菜单项 (android.R.id.home) 的点击侦听器。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
祝你好运!
在我的应用程序中,MainActivity 使用导航抽屉来托管多个片段。 MainActivity提供工具栏,片段内容以Frame Layout显示在工具栏下方。
在 MainActivity 中,我开始我的第一个片段并初始化我的工具栏,如下所示。
fragmentManager.beginTransaction().replace(R.id.content_frame, new FirstFragment()).commit();
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Fragment 1");
我的一个片段需要一个子片段。我想向该子片段添加一个后退按钮,并在 MainActivity 中覆盖 onBackPressed()。
我的工具栏目前只显示 3 行汉堡包,按下它会打开导航抽屉并显示我的片段列表。
我不确定如何在我的子片段中显示后退箭头而不是汉堡包。然后我需要捕获 onBackPressed() 事件并处理它。
我可能做错了,可能应该使用活动而不是片段,但如果我这样做,我将无法为片段 slide_in / slide_out 转换设置动画。工具栏会随着框架布局滑动,我不希望这样。
我希望片段内容显示过渡,而工具栏保持不变。正如您在 View Pager 中所期望的那样。
如有任何建议,我将不胜感激。
谢谢!
您可以更改 "home icon" 调用这些行:
getSupportActionBar().setHomeAsUpIndicator(R.drawable.your_arrow_icon);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
要处理 "home click",您必须覆盖 onOptionsItemSelected 并处理主菜单项 (android.R.id.home) 的点击侦听器。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
祝你好运!