【问题标题】:Android - Menu items are not shown in ActionBar to start appAndroid - 菜单项未显示在 ActionBar 中以启动应用程序
【发布时间】:2014-12-16 10:14:25
【问题描述】:

我正在创建一个包含 2 个片段的活动。我正在为每个片段实现不同的菜单项。但我有一个问题。我的错误顺序:

  • 选项卡 1 - 片段 1 -> 菜单的操作栏上没有按钮
  • 选项卡 2 - 片段 2 -> 菜单显示正确
  • 选项卡 1 - 片段 1 -> 显示菜单

在我经过片段 2 并返回片段 1 之前,我的 ActionBar 图标不会显示。我的错误可能是什么?谢谢

片段 1

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    rootView = inflater.inflate(R.layout.fragment_listado, container, false);

    declararObjetos();
    iniciarBaseDatos();
    sonidos();
    cargarLocalizacion();
    reiniciarListview();
    pintarElementos();

    setHasOptionsMenu(true);
    Modulo.getOverflowMenu(getActivity());
    ActivityCompat.invalidateOptionsMenu((Activity) context);

    return rootView;
}

public void onPrepareOptionsMenu(Menu menu) {

    menuItemActualizarLista = menu.findItem(R.id.menuOpcActualizarLista);
    menuItemBuscar = menu.findItem(R.id.menuOpcBuscar);

    menuItemActualizarLista.setVisible(true);
    menuItemBuscar.setVisible(true);
}

public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case R.id.menuOpcActualizarLista:

        reiniciarListview();
        return true;

    case R.id.menuOpcBuscar:

        cargarBuscar();
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

菜单

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/menuOpcActualizarLista"
    android:visible="false"/>

<item
    android:id="@+id/menuOpcBuscar"
      android:icon="@drawable/icono_lupa"
      android:visible="false"
      android:showAsAction="always" />
</menu>

【问题讨论】:

  • 这个片段是什么?片段 1 还是 2?
  • 我没有看到菜单膨胀.. onCreateOptionsMenu 在哪里?
  • 我不使用 onCreateOptionsMenu,因为我的菜单到现在都可以正常工作
  • 也尝试将ActivityCompat.invalidateOptionsMenu((Activity) context); 更改为onActivityCreated
  • 你能把onActivityCreated的所有代码都显示出来吗?

标签: android menu tabs fragment


【解决方案1】:

您需要为菜单充气,以便显示它。

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

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Modulo.getOverflowMenu(getActivity());
    ActivityCompat.invalidateOptionsMenu(getActivity());
}

【讨论】:

  • 我已经编辑了我的代码。我展示我的菜单。使用您的代码,仅显示 menuOpcBuscar 开始。 3 个点未显示,但菜单按钮有效
  • 另一个没有标题或图标。你想展示什么?
  • 请正确输入您的菜单项。您需要添加标题并将showAsAction 设置为ifRoom
  • 我不想要带有文本的项目。我想要 3 个点的菜单中的一个项目
  • 然后使用android:showAsAction="never"。但是你仍然需要一个标题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 2015-08-12
  • 2015-04-30
  • 2012-01-02
  • 2013-06-19
相关资源
最近更新 更多