【问题标题】:Why do I get copies of the same option menu item in ActionBar?为什么我会在 ActionBar 中获得相同选项菜单项的副本?
【发布时间】:2013-03-15 00:20:50
【问题描述】:

我将 ActionbarSherlock 与 Fragments 一起使用。在其中一个片段中,我在操作栏中添加了一个选项菜单项。它显示出来,当我单击它时,我会收到一个回调,在该回调中我移动到另一个 Activity。当我返回此活动时,我会在操作栏中获得相同选项菜单项的另一个副本。我知道有两个选项可以按。两者都有效。 如何去掉多余的菜单项?

菜单如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
    android:id="@+id/menu_scan_book"
    android:orderInCategory="100"
    android:showAsAction="ifRoom"
    android:title="@string/menu_scan_book"/>
</menu>

在我的 SherlockFragment 中有这段代码

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.scan_book_action_menu, menu);
}

在拥有我试图调用的 Fragment 的 SherlockFragmentActivity 中

supportInvalidateOptionsMenu()

当我从移动到上面的活动返回时。

我错过了什么?

【问题讨论】:

  • 如果我不得不猜测,您有两个操作栏项目,因为不知何故,您有两个片段副本。
  • 也许,但我必须检查更多。我保持应用程序打开并执行操作的时间越长,我就会获得选项项目的多个副本。我将使用片段的多个副本进行检查。
  • 重启 Eclipse 后问题消失。这可能是一个构建问题。很抱歉占用您的时间。
  • 重启 Eclipse 确实可以解决很多问题,但说实话,我从没想过它会在这种情况下有所帮助。不过,很高兴听到它对您有用!
  • 你是对的。它没有帮助。每次我点击它时都会添加一个选项。我调用另一个意图(使用条形码扫描仪扫描),然后返回此活动。周末我很忙,但当我回来时需要调试更多。

标签: android android-fragments actionbarsherlock


【解决方案1】:

您是否尝试在 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 中调用 menu.clear() ?这只是一种解决方法,但对我有用。

点击这里了解更多信息:Fragments, with the same menu, on the same layout cause duplicated menuitem

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多