当前位置: 首页 > 知识库问答 >
问题:

初始化支持操作工具栏后不膨胀菜单的片段

韩弘壮
2023-03-14

我有一个没有动作栏主题的appcompat活动。我在活动中运行一个片段来显示项目列表。项目以两种模式显示:列表和删除。当屏幕打开时,它始终处于列表模式。两种显示模式下的动作条是不同的。在列表模式下,在操作栏的右侧有两个菜单项,当片段打开时会显示出来。当我从删除模式回到列表模式时,菜单项不会膨胀。如何使菜单项膨胀,同时从删除模式到列表模式。

进入屏幕后,用户进入列表模式。我有setHasOptionMenu(真);在我的碎片里。因此,onCreateOptionMenu和onPrepareOtionsMenu都被调用,并且这两个菜单项被适当地膨胀。

当我从列表模式切换到删除模式时(当您单击左上角操作栏中显示的删除菜单项时会发生这种情况),我会膨胀一个新的自定义视图,并从工具栏中删除所有视图,然后将该自定义视图添加到工具栏中,以按照删除模式更改操作栏:

View customView = LayoutInflater.from(getActivity()).inflate(
R.layout.delete_mode_toolbar_layout, null);
Toolbar toolbar = mActionBarHelper.getToolbar();
toolbar.removeAllViews();
toolbar.addView(customView);

它在删除模式下工作得很好。

View customView = LayoutInflater.from(getActivity()).inflate(R.layout.list_mode_toolbar_layout,null);
Toolbar toolbar = mActionBarHelper.getToolbar();
toolbar.removeAllViews();
toolbar.addView(customView);
Objects.requireNonNull((AppCompatActivity)getActivity()).supportInvalidateOptionsMenu();

所以请有人帮助我理解为什么菜单项没有膨胀后,从删除模式回到列表模式。

提前谢了。

共有1个答案

阎建华
2023-03-14

我得到了一个工作,这是一个解决我的情况,但不是解决我的问题。

现在,当从列表模式转到删除模式时,首先隐藏工具栏中已经存在的列表模式自定义工具栏布局(通过保留对列表模式自定义工具栏布局的引用),然后膨胀删除模式自定义工具栏布局,并使用toolbar.addview(view)将其添加到工具栏中。现在,当从删除模式再次返回到列表模式时,只需使用toolbar.RemoveView(view)从工具栏中删除自定义的删除工具栏布局,然后使工具栏中已经存在的列表模式工具栏布局可见。

 类似资料:
  • 我在上获得NPE。 已添加到中 我也尝试了这个:1。在fragment(活动中移除onCreateOptionsMenu)2中膨胀菜单。将menuItem(复选标记)传递回活动槽界面,这样我就可以访问复选标记3。如果在searchview上设置监听器,则仍然获得NPE

  • 我在活动文件中有一个膨胀的视图,布局文件碰巧有一个工具栏小部件,我希望用图标填充。我尝试使用code但是没有显示出来,工具栏文本也没有显示出来。布局的代码是这样的... 如何成功地使此工具栏在一个膨胀的视图中显示图标和文本?

  • 我的应用程序里有标签。每个标签是不同的片段和不同的菜单。下面是我正在使用的布局 现在,对于中的每个片段,我都进一步提到了。我已经覆盖了每个片断中的函数,它首先有,然后调用它的超级构造函数,然后膨胀片断自己的菜单XML。但我得到的结果是这样的- 假设有5个选项卡。第2和第3个选项卡中的viewpager由中的两个片段组成 第一个选项卡没有菜单 第二个选项卡有menu_2(仅用于第二个子片段) 第三个

  • 这个章节,我们会创建状态栏、菜单和工具栏。菜单是一组位于菜单栏的命令。工具栏是应用的一些常用工具按钮。状态栏显示一些状态信息,通常在应用的底部。 主窗口 QMainWindow提供了主窗口的功能,使用它能创建一些简单的状态栏、工具栏和菜单栏。 主窗口是下面这些窗口的合称,所以教程在最下方。 状态栏 状态栏是用来显示应用的状态信息的组件。 #!/usr/bin/python3 # -*- codin

  • 这个章节,我们会创建状态栏、菜单和工具栏。菜单是一组位于菜单栏的命令。工具栏是应用的一些常用工具按钮。状态栏显示一些状态信息,通常在应用的底部。 主窗口 QMainWindow 提供了主窗口的功能,使用它能创建一些简单的状态栏、工具栏和菜单栏。 主窗口是下面这些窗口的合称,所以教程在最下方。 状态栏 状态栏是用来显示应用的状态信息的组件。 #!/usr/bin/python3 # -*- codi

  • 我有一个工具栏和一个导航抽屉。当我启动应用程序时,会创建工具栏和导航抽屉。当我单击导航抽屉中的项目时,它会启动新的片段并保留相同的工具栏。当我启动特定片段时,我基本上如何向工具栏添加菜单项,例如搜索、添加、编辑?我不希望在程序开始时使用它们,而是动态创建的。还有,我怎样才能点击这些按钮,让它们启动其他片段呢。我希望在一个片段中,与另一个片段中的编辑按钮相比,工具栏中的编辑按钮可以做特定的事情。谢谢