簡體   English   中英

Android工具欄中的Searchview

[英]Searchview in android Toolbar

我正在嘗試在我的Android應用程序的工具欄中構建一個searchview,但在onCreateoptionsMenu方法的第3行中得到一個空指針異常。 任何幫助將不勝感激,謝謝你提前。

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.main, menu);
    SearchManager searchManager =(SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView =(SearchView) menu.findItem(R.id.search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    return true;

}

這是我的menu.xml -

<item
    android:icon="@drawable/ic_search"
    android:id="@+id/action_search"
    android:orderInCategory="200"
    android:title="Search"
    app:showAsAction="ifRoom" />

嘗試更改此行:

SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

在菜單中設置SearchView類。

   <item
        android:icon="@drawable/ic_search"
        android:id="@+id/action_search"
        android:orderInCategory="200"
        android:title="Search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="ifRoom" />

你錯過了app:actionViewClass="android.support.v7.widget.SearchView"屬性。 你需要導入android.support.v7.widget.SearchView;

 <?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/search"
            android:title="@string/Search"
            app:actionViewClass="android.support.v7.widget.SearchView"
            app:showAsAction="always|collapseActionView" />
    </menu>

您忘了在actionViewClass中添加actionViewClass

將這些行添加到menu.xml

...
app:showAsAction="always|collapseActionView"
android:actionViewClass="android.support.v7.widget.SearchView" />

在您的Java代碼中找到SearchView使用 -

SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));

參考 - MenuItemCompat

試着用這個

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    // Inflate menu to add items to action bar if it is present.
    inflater.inflate(R.menu.menu_main, menu);
    // Associate searchable configuration with the SearchView
    SearchManager searchManager =
            (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView =
            (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setSearchableInfo(
            searchManager.getSearchableInfo(getComponentName()));

    return true;
}


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

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

<item
    android:id="@+id/menu_search"
    android:title="@string/menu_search"
    appcompat:actionViewClass="android.support.v7.widget.SearchView"
    appcompat:showAsAction="always"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM