在我们的应用程序中,我们有一些片段可以显示为全屏片段或对话片段。这些片段继承自DialogFragment
,我们确保根据应用程序执行的模式(全屏或对话框)正确实例化它们。
在使用Lollipop在支持库中引入Toolbar
小部件的最新更改之后,我们考虑为其中一些对话框片段添加一些额外的功能。我们的想法是在我们的onCreateOptionsMenu
子类中存在普通片段(即在执行DialogFragment
后膨胀的选项菜单)中通常具有的选项菜单类型,仅当这些菜单可视化为对话框时。简而言之:当片段以全屏模式显示时,我们会对传统的选项菜单进行充气,当片段显示为对话框时,我们希望使用相同的选项菜单,但在独立模式下使用新的工具栏小部件。
我按照http://android-developers.blogspot.dk/2014/10/appcompat-v21-material-design-for-pre.html的步骤操作,我设法“激活”工具栏,但似乎菜单没有膨胀 - 请参阅附件截图(全屏模式下的图片片段,对话框模式下的图片2)
是否可以使用DialogFragment
中的新工具栏来扩充选项菜单?
答案 0 :(得分:26)
是否可以使用新工具栏来扩充选项菜单 DialogFragment?
首先你的设计还可以,工具栏应该用在每一个让我们看看 Chris Banes google engineer link的地方:
// Set an OnMenuItemClickListener to handle menu item clicks
toolbar.setOnMenuItemClickListener(
new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// Handle the menu item
return true;
}
});
// Inflate a menu to be displayed in the toolbar
toolbar.inflateMenu(R.menu.your_toolbar_menu);
以及android开发人员工具栏独立样本:
http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html
答案 1 :(得分:4)
是的,DialogFragment具有setHasOptions()函数。在对话框的布局中定义工具栏,并将其用作活动中的工具栏。工具栏不介意在活动或片段或对话框片段中.......
请务必使用
setHasOptionsMenu(true) in onActivityCreated method....
然后,像往常一样覆盖
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
}
和
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}