0

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

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

我的方法是

@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;
}

堆栈跟踪

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 
4

6 回答 6

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>

您需要添加以下内容:

<item android:id="+@id/..."
      android:actionViewClass="android.widget.SearchView"
      yourapp:actionViewClass="android.widget.SearchView" />

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

于 2013-10-16T02:36:17.240 回答
4

如果您使用的是 AppCompat 库,则在 menu.xml 中添加

app:actionViewClass="android.support.v7.widget.SearchView"

代替

app:actionViewClass="android.widget.SearchView"
于 2014-09-29T12:02:22.607 回答
3

我正在使用安卓工作室

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

    <item
        android:id="@+id/search"
        android:title="Buscar"
        android:icon="@drawable/ic_search"
        app:showAsAction="collapseActionView|ifRoom"
        android:actionViewClass="android.widget.SearchView"
        app:actionViewClass="android.widget.SearchView"/>

</menu>

找到 100%

于 2014-03-03T17:05:46.157 回答
0

有时问题出在

setHasOptionsMenu(true);

将它从 oncreate 或 onviewcreate 移动到附加方法并尝试它。

于 2014-05-09T14:18:53.433 回答
0

要从菜单 xml 中引用布局,请使用 actionLayout 属性:

<menu>
<item android:id="@+id/menu_name"
  android:actionLayout="@layout/your_layout"
  android:showAsAction="always"/>
</menu>
于 2013-07-27T21:14:23.697 回答
0

检查此答案您使用了错误的命名空间或导入了错误的类 https://stackoverflow.com/a/38702262/5374951

于 2016-08-01T15:12:09.327 回答