android - MenuItemCompat.getActionView(searchItem) 返回 null

标签 android android-actionbar android-appcompat

我正在尝试使用 appcompat 在我的操作栏中添加操作项。我在单击它时添加了搜索操作,我的应用程序因 NullPointerException 而崩溃。在 onCreateOptionsMenu 中,我得到了这个 View 引用,但我总是得到 null。有什么解决这个问题的建议吗??

主.xml

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

    <item
        android:id="@+id/action_bar_refresh"
        android:icon="@drawable/ic_action_refresh"
        app:showAsAction="ifRoom"
        android:title="@string/action_refresh" />

    <item
        android:id="@+id/action_bar_search"
        android:icon="@drawable/ic_action_search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="ifRoom"
        android:title="@string/action_search" />

    <item
        android:id="@+id/action_bar_settings"
        android:title="@string/action_settings"
        app:showAsAction="never" />


</menu>

主 Activity .java

public class MainActivity extends ActionBarActivity {

    private SearchView mSearchView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);

        MenuItem searchItem = menu.findItem(R.id.action_bar_search);
        mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_bar_search:
                mSearchView.setIconified(false);
                return true;
        }
        return false;
    }

}

在这里,我在 searchView 中得到空值

MenuItem searchItem = menu.findItem(R.id.action_bar_search);
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);

截图

enter image description here

最佳答案

 <item
        android:id="@+id/action_bar_search"
        android:icon="@drawable/ic_action_search"
        app:actionViewClass="android.support.v7.widget.SearchView"
   app:showAsAction="collapseActionView|ifRoom"
        android:title="@string/action_search" />

您更改 showAsAction 属性。

关于android - MenuItemCompat.getActionView(searchItem) 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22830181/

相关文章:

android - 在 Android 中扩展样式中的属性

Android 在横向工具栏内强制 ActionBar

android - 如何禁用在 phonegap android 中播放的 youtube 背景

java - Androidplot错误: Cannot resolve getGraphWidget and other method

android - Android 抽屉导航的新官方图标

java - appcompat 库的 src 文件夹中没有文件

android - 带有 AppCompat-v7 21 的透明操作栏

android - 带有 CardView 的 StaggeredGridLayoutManager 不适合项目测量

Android Dex : Unable to execute DX (IntelliJ)

android - 带有溢出菜单的自定义操作栏布局