【发布时间】:2019-01-30 09:49:34
【问题描述】:
我有一个没有操作栏主题的 appcompat 活动。我在活动中运行一个片段以显示项目列表。项目以两种模式显示:列表和删除。当屏幕打开时,它始终处于列表模式。两种显示模式中的操作栏是不同的。在列表模式下,在操作栏中,我在右侧有两个菜单项,当片段打开时显示。当我从删除模式回到列表模式时,菜单项不会膨胀。如何在从删除模式到列表模式时使菜单项膨胀。
进入屏幕后,用户进入列表模式。我有 setHasOptionMenu(true);在我的片段中。所以 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();
但是这次在列表模式下,操作栏按照列表模式的自定义工具栏正确显示,并且 oncreateoptionsmenu 和 onprepareoptionsmenu 都被调用。但是菜单项没有膨胀。
抱歉,由于一些限制,这是我可以分享的所有代码。请评论您的疑问,我可以尝试在 cmets 中清除它们。
所以请有人帮我理解为什么菜单项在从删除模式返回到列表模式后没有膨胀。
提前致谢。
【问题讨论】:
标签: android menu android-toolbar android-appcompat appcompatactivity