如果菜单项showAsAction =" always"则不调用MenuItem的onclick方法。

时间:2015-09-30 06:47:17

标签: android menuitem android-menu

我的菜单项有问题。

我的菜单中有一个搜索视图,我在OnMenuItemClickListener的项目上设置onPrepareOptionsMenu

enter image description here

和我的菜单xml:showAsAction属性设置为"始终" enter image description here

然而,如果我点击搜索图标,没有任何事情发生,吐司就没有出现。

enter image description here

奇怪的是,如果我设置showAsAction ="总是| collapseActionView",如果能够工作,但搜索图标已经消失并被"搜索"文本。

它起作用,显示吐司。

enter image description here

但图标消失了

enter image description here

********************编辑************************** **************

enter image description here

1 个答案:

答案 0 :(得分:2)

您的菜单使用了错误的语法。请用此替换菜单inflater / handler代码。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.yourActivity_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.search) {
        //Handle the onClick with Toast over here.
        //IF you have multiple options then replace if with a switch() statement
        return true;
    }

    return super.onOptionsItemSelected(item);
}

就图标而言,您已通过添加android:icon =“@ drawable / YOU_ICON_HERE”

在xml文件中指定了icon属性

编辑:看看这个http://developer.android.com/training/search/setup.html你应该保留android:showAsAction =“collapseActionView | ifRoom”,这样才能工作。您现在唯一需要做的更改是将一个android:icon属性添加到xml

<item android:id="@+id/search"
      android:title="@string/search_title"
      android:icon="@drawable/ic_search"
      android:showAsAction="collapseActionView|ifRoom"
      android:actionViewClass="android.widget.SearchView" />

或android.widget.v7支持,具体取决于您希望支持的Android版本