android - 当您已经有选项卡和菜单时,将 'Add Button' 添加到顶部的操作栏

标签 android android-fragments android-actionbar drawable

我正在尝试在操作栏的顶部添加一个“添加项目”按钮。 (在应用程序图标和标题的右侧)。

在操作栏的正下方,我有两个选项卡,我可以在它们之间滑动。我还有一个为设置菜单定义的菜单 XML 文件。

我认为 actionbar 也使用菜单 XML。所以我添加了一个操作栏菜单 XML,但是当我使用

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM);
actionbar.setCustomView(R.menu.actionbar);

我的程序崩溃了。我相信我这样做是完全错误的。

我的操作栏 XML:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/item1" android:icon="@android:drawable/ic_menu_add"></item>


</menu>

我在一些教程中读到我应该将项目添加到操作栏并通过 mainActivity 中的 OnCreateOptionsMenu 函数填充它。但那是填充我的选项菜单的地方,而不是我的操作栏。

最佳答案

Activity 在其 onCreateOptionsMenu() 方法中填充 ActionBar。

不使用 setcustomview(),而是像这样覆盖 onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.mainmenu, menu);

   return true;
} 

如果选择了 ActionBar 中的 Action ,则调用 onOptionsItemSelected() 方法。它接收选定的操作作为参数。根据这些信息,您的代码可以决定要做什么,例如:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menuitem1:
           Toast.makeText(this,"Menu Item 1 selected",Toast.LENGTH_SHORT).show();
           break;
        case R.id.menuitem2:
           Toast.makeText(this,"Menu item 2 selected",Toast.LENGTH_SHORT).show();
           break;
        default:
           break;
    }

    return true;
} 

关于android - 当您已经有选项卡和菜单时,将 'Add Button' 添加到顶部的操作栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15993247/

相关文章:

Android INDETERMINATE_PROGRESS 仅在 Android 4.0.3 上保持可见

Android Studio 无法识别 9patch 生成的图像

android - 如何删除不需要的dex文件?

java - Android fragment 预加载数据

android - 根据 ListFragment 中可见项的数量更改 ActionBar 中的操作

android-studio - IllegalArgumentException:ID 未引用此事件中的 View

Android ndk 错误 asm types.h 未找到

java - 设置字符码表在ESC/POS打印机中打印非拉丁字符

android - 在 ViewPager 中更改 ImageView Drawable

android - viewpager对应tab的fragment数据只需要在tab被点击的时候加载