2017-06-03 118 views
1

我有一個工具欄,片段和我想添加搜索查看該工具欄搜索查看在片段的Android

我有這樣的:

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

但我有一個空指針...

致命例外:main 過程:jaimeperezpedraza.org.tienda,PID:15971 顯示java.lang.NullPointerException:嘗試上的空對象引用調用虛擬方法 '無效android.widget.SearchView.setOnQueryTextListener(android.widget.SearchView $ OnQueryTextListener)'

我覺得我不抓searchview好...

有幫助嗎?

+1

'查看getActionView(菜單項項)'已經過時:https://developer.android.com/reference/android/support/v4/view/MenuItemCompat.html #getActionView(android.view.MenuItem) –

+0

哦...謝謝我去搜索其他mettod –

+0

@VeneetReddy - 它只在26.0.0版本中被棄用,它仍然是alpha版本。如果您使用早期版本的支持庫,則仍然需要使用'MenuItemCompat.getActionView'。 – ianhanniballake

回答

1

您的NullPointerException是由於searchView爲空。這是因爲你的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

哇......這個「:」哈哈哈抱歉的男人,我是如此愚蠢 –