【问题标题】:How to show a MenuItem from a custom Fragment如何从自定义片段中显示 MenuItem
【发布时间】:2013-08-08 18:25:50
【问题描述】:

我的onCreateOptionsMenu() 中有一个SearchView,我用它来隐藏它:

if(mState == 0){
    msearchMenuItem.setVisible(false);  
}

我希望在访问作为ViewPager 一部分的自定义Fragment 后它是真的:

setMenuVisibility(boolean menuVisible){
}

我知道我不能将MenuItem 的引用传递给我的Fragment,因为ActionBar 不是layout,它的所有过程都需要来自MainActivity

我的选择是在我的Fragment 中将mState 的值从setMenuVisibility() 更改,但在我与DrawerLayout 交互后它显示SearchView。如果我不触摸主页按钮,它将永远不会显示SearchView

现在,当我在 Fragment 时,我该怎么做才能准确加载它?

【问题讨论】:

  • msearchMenuItem.setVisible(false); 是在方法 setMenuVisibility(boolean menuVisible) 内还是在 onOptionsItemSelected(MenuItem item) 内。如果是后者,在菜单被触摸之前不会被调用。可能这就是为什么您在触摸菜单之前看不到它的原因。在这种情况下,您应该将其移至前一种方法setMenuVisibility。尝试发布完整代码 sn-ps 而不是部分代码,您将获得更好更快的答案。

标签: android android-fragments android-viewpager searchview


【解决方案1】:

当您在片段中时,您创建一个回调来再次启用菜单选项。

Communicating with an Activity

【讨论】:

    【解决方案2】:

    现在,当我在 Fragment 时,我该怎么做才能准确加载它?

    您可以使用 Fragment 的 onCreateView() 方法中的 setMenuVisibility() 回调。

    【讨论】:

      【解决方案3】:

      实际答案是覆盖我的Fragment 中的onCreateOptionsMenu()。但首先,我必须在onCreate() 中调用setHasOptionsMenu(true);,这样覆盖才能生效。

      【讨论】:

        猜你喜欢
        • 2014-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-20
        • 1970-01-01
        • 2014-01-05
        • 1970-01-01
        相关资源
        最近更新 更多