Java 将搜索视图添加到应用程序栏-空对象引用错误

Java 将搜索视图添加到应用程序栏-空对象引用错误,java,android,Java,Android,我得到以下错误: java.lang.NullPointerException:尝试在第28行的空对象引用上调用虚拟方法“void android.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)” 此代码来自android开发者网站 菜单/选项\u menu.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://

我得到以下错误:

java.lang.NullPointerException:尝试在第28行的空对象引用上调用虚拟方法“void android.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)”

此代码来自android开发者网站

菜单/选项\u menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/search"
        android:title="Seach now"
        android:icon="@drawable/searchicon"
        android:showAsAction="collapseActionView|ifRoom"
        android:actionViewClass="android.widget.SearchView" />
</menu>
显示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.agoogler.rafi.search_test2">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="android.app.searchable"
                android:resource="@xml/searchable" />

        </activity>
    </application>

</manifest>

只需将其替换到菜单文件中即可

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_search"
    android:icon="@drawable/disha"
    app:showAsAction="collapseActionView|always"
    android:title="search"
    app:actionViewClass="android.support.v7.widget.SearchView"/>



  </menu>
或者试试这个

如果您想在应用程序栏中添加搜索视图,则可以尝试此操作

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    getSupportActionBar().setCustomView(R.layout.search_layout);

    search = (EditText) getSupportActionBar().getCustomView().
            findViewById(R.id.searchfield);

    search.setOnEditorActionListener(new EditText.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId,
                                      KeyEvent event) {
            return true;
        }
    });

    getSupportActionBar().setDisplayOptions(getSupportActionBar().DISPLAY_SHOW_CUSTOM
            | getSupportActionBar().DISPLAY_SHOW_HOME);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
然后像这样为它创建一个自定义布局

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/searchfield"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/custom_search_edit"
android:hint="@string/search_hint"
android:inputType="textFilter"
android:textColor="@color/colorBlack"
android:textColorHint="@color/colorAccent"
android:textSize="15sp" />


在布局文件夹中创建etLayout XML

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/search_hint"
android:inputType="textFilter" />


您的解决方案@Zee mnot是否已获得………您的解决方案是否已获得如果我更换,则说明namspace应用程序未绑定。。应用程序以redxmlns:app=”“格式出现,请在菜单中添加此内容file@zeeM用我的代码替换menu.xml,然后让我know@zeeM如果你有任何疑问,请告诉我。你能解释一下为什么previos代码不起作用吗。它来自安卓开发网站
 getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    getSupportActionBar().setCustomView(R.layout.search_layout);

    search = (EditText) getSupportActionBar().getCustomView().
            findViewById(R.id.searchfield);

    search.setOnEditorActionListener(new EditText.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId,
                                      KeyEvent event) {
            return true;
        }
    });

    getSupportActionBar().setDisplayOptions(getSupportActionBar().DISPLAY_SHOW_CUSTOM
            | getSupportActionBar().DISPLAY_SHOW_HOME);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/searchfield"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/custom_search_edit"
android:hint="@string/search_hint"
android:inputType="textFilter"
android:textColor="@color/colorBlack"
android:textColorHint="@color/colorAccent"
android:textSize="15sp" />
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/miActionButton"
    app:showAsAction="ifRoom"
    app:actionLayout="@layout/etLayout"
    android:title="Loading..."/>

</menu>
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/search_hint"
android:inputType="textFilter" />