片段中的 SearchView Android

SearchView in fragment Android

我有一个工具栏到片段中,我想为这个工具栏添加 searchView

我有这个:

 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    menu.clear();
    getActivity().getMenuInflater().inflate(R.menu.menu_principal, menu);
    MenuItem item = menu.findItem(R.id.buscar);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return true;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            try {
                ArrayList<Producto> listaFiltrada = filter(list,newText);
                adapterProductos.setFilter(listaFiltrada);
            }catch (Exception r) {
                r.printStackTrace();
            }
            return true;
        }
    });

    MenuItemCompat.setOnActionExpandListener(item, new MenuItemCompat.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            adapterProductos.setFilter(list);
            return true;
        }
    });
}

和此项菜单:

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

但是我有一个空指针...

FATAL EXCEPTION: main Process: jaimeperezpedraza.org.tienda, PID: 15971 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setOnQueryTextListener(android.widget.SearchView$OnQueryTextListener)' on a null object reference

我觉得我没有很好地捕捉 searchView...

帮忙?

您的 NullPointerException 是由于 searchView 为空。这是因为您的 XML 有 app:actionViewClass="android:support.v7.widget.SearchView" - 请注意 class 名称中间的 :

应该改为 android.support.v7.widget.SearchView:

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