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