DialogFragment中的工具栏

在我们的应用程序中,我们有几个片段可以显示为全屏片段或作为对话框片段。 这些片段inheritance自DialogFragment ,我们确保根据应用程序的执行模式(全屏或对话框)正确地实例化它们。

Toolbar窗口小部件的最新变化引入了支持库中的棒棒糖之后,我们想过为这些对话框片段添加一些额外的function。 我们的想法是,只有当我们的DialogFragment的子类中存在一个普通的片段(即在执行onCreateOptionsMenu之后膨胀的选项菜单)的选项菜单的DialogFragment时,它们才可视化为对话框。 简而言之,当片段以全屏模式显示时,我们会夸大传统的选项菜单,当片段显示为对话框时,我们希望使用相同的选项菜单,但在独立模式下使用新的工具栏小部件。

我遵循http://android-developers.blogspot.dk/2014/10/appcompat-v21-material-design-for-pre.html的步骤,我设法“激活”工具栏,但似乎菜单是没有膨胀 – 看附加的截图(全屏模式下图片一个,对话模式下图片二)。

DialogFragment的新工具栏甚至有可能使选项菜单膨胀?

全屏模式对话框模式

Solutions Collecting From Web of "DialogFragment中的工具栏"

用DialogFragment中的新工具栏甚至有可能使选项菜单膨胀?

首先你的devise是好的,工具栏应该用在每一个地方让我们看看这个从Chris Banes谷歌工程师链接 :

 // 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

是的,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); }