searchview中的空指针异常

San*_*dav 0 android listview android-fragments

我正在尝试在shreyaloclistfragment中创建列表搜索视图.我在下面的行中得到NullPointerException

final SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
Run Code Online (Sandbox Code Playgroud)

我的方法是

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater ) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate( R.menu.menu_search, menu);
    System.out.println( "inflating menu");

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



    final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextChange(String newText) {
            showFilteredItems( newText );
            return true;
        }

        @Override
        public boolean onQueryTextSubmit(String query) {
            return true;
        }
    };

    searchView.setOnQueryTextListener(queryTextListener);

    return;
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

FATAL EXCEPTION: main
java.lang.NullPointerException
at com.sears.syw.FragmentShopsTab.onCreateOptionsMenu(FragmentShopsTab.java:52)
at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:55)
at  


com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:559    )
at   

    com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSh    erlockNative.java:65)
at 
Run Code Online (Sandbox Code Playgroud)

Xel*_*elz 9

如果您使用的是Appcompat库,可能忘了在menu_search.xml上添加自己的xmlns.

如例子所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      yourapp:showAsAction="ifRoom"  />
</menu>
Run Code Online (Sandbox Code Playgroud)

您需要添加以下内容:

<item android:id="+@id/..."
      android:actionViewClass="android.widget.SearchView"
      yourapp:actionViewClass="android.widget.SearchView" />
Run Code Online (Sandbox Code Playgroud)

资料来源:https://developer.android.com/training/basics/actionbar/adding-buttons.html#XML