2017-06-03 17 views
1

私はフラグメントにツールバーを持っていると私はこのツールバーのためsearchViewを追加したいSearchViewのAndroid

I持っているこの:

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" 
    /> 

しかし、私はヌルポインタを持っています...

致命的な例外:メイン プロセス:jaimeperezpedraza.org.tienda、PID:15971 java.lang.NullPointerExceptionが:NULLオブジェクト参照に 'ボイドandroid.widget.SearchView.setOnQueryTextListener(android.widget.SearchView $ OnQueryTextListener)' 仮想メソッドを呼び出す試み

私はsearchViewをキャッチしていないと思います...

help?

+1

'ビューgetActionView(MenuItemの項目は)'廃止されました:https://developer.android.com/reference/android/support/v4/view/MenuItemCompat.html #getActionView(android.view.MenuItem) –

+0

ああ...他のmettodを検索していただきありがとうございます。 –

+0

@VeneetReddy - それはまだアルファベットになっているバージョン26.0.0で廃止されました。以前のバージョンのサポートライブラリを使用している場合は、 'MenuItemCompat.getActionView'を使用する必要があります。 – ianhanniballake

答えて

1

NullPointerExceptionsearchViewがnullであるためです。これは、XMLにapp:actionViewClass="android:support.v7.widget.SearchView"があるためです(クラス名の途中に:があることに注意してください)。

それは代わりに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" 
    /> 
+0

うわー..... "これは申し訳ありませんが、私はとてもばかげた –

関連する問題