ActionBar 菜单项在嵌套片段中消失

Posted

技术标签:

【中文标题】ActionBar 菜单项在嵌套片段中消失【英文标题】:ActionBar Menu Items disappear in NestedFragments 【发布时间】:2012-12-17 17:11:21 【问题描述】:

由于 android 4.2 现在支持 NestedFragment ,并添加它以支持 v13。

我在一个经典的情况下使用了这个 NestedFragment:创建可以左右滑动并占用大部分屏幕空间的 fragmentA,并将 fragmentB 和 fragmentC 插入到每个 Fragment 页面中。

我的问题是我在 fragmentB 和 fragmentC 中创建的 MenuItem 无法在 Activity 的操作栏上显示。在我使用 NestedFragment 之前,它运行良好。

【问题讨论】:

对此有解决方案吗? 【参考方案1】:

在某个时候遇到了同样的问题。如果您使用的是 ActionBarSherlock 库,这是一个小错误。您基本上要做的是从 onCreateOptionsMenu() 方法中的父片段调用子级的 onCreateOptionsMenu() 方法,例如:

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
    super.onCreateOptionsMenu(menu, inflater);
    getChildFragment().onCreateOptionsMenu(menu, inflater);

希望这可行,让我知道。

干杯。

【讨论】:

getChildFragment() 片段中不存在此方法。我似乎在任何地方都找不到它 所以你说的是这个错误吧? github.com/JakeWharton/ActionBarSherlock/issues/828 实际上您必须使用:getChildFragmentManager().findFragmentById()getChildFragmentManager().findFragmentByTag() 来获取子片段。然后你可以打电话给onCreateOptionsMenu(menu, inflater)。不要忘记检查片段实例是否为非空和childFragment.isAdded() 我已经找了好几天了!谢谢!

以上是关于ActionBar 菜单项在嵌套片段中消失的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController上的swift菜单项在打开segue时消失[关闭]

无法接收点击片段中的菜单项

如何更改 Android 中各个片段的 ActionBar 颜色?

根据导航目标更新ActionBar菜单

根据导航目的地更新 ActionBar 菜单

菜单在片段中不可见