Android - 菜单项未显示在ActionBar中以启动应用

时间:2014-12-16 10:14:26

标签: android menu tabs fragment

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

  • 标签1 - 片段1 - > ActionBar菜单
  • 上没有按钮
  • 表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 个答案:

答案 0 :(得分: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());
}