2014-10-25 14 views
16

ho implementato SearchView in ActionBar prima di utilizzare appcompat.v7 ma quando voglio usare il SearchView con libreria di supporto v7 mostra eccezione nulloSearchView utilizzando AppCompat

In stile

<item android:id="@+id/action_search" 
    android:title="@string/action_search" 
    android:icon="@drawable/ic_action_search" 
    app:showAsAction="always|collapseActionView" 
    android:actionViewClass="android.support.v7.widget.SearchView" /> 

in classe Java:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu, menu); 
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 
    searchView.setOnQueryTextListener(this); 
    return super.onCreateOptionsMenu(menu); 
} 

La mia domanda è come dichiarare SearchView in onCreateOptionsMenu per essere in grado di impostare query di chi ascolta?

+3

Come Espen Riskedal ha dichiarato: "cambiare android: actionViewClass in app: actionViewClass" è anch'esso importante. – gio

risposta

24

È necessario utilizzare i metodi statici in MenuItemCompat gestire tutte le voci di menu AppCompat. Questo è stato menzionato in this blog post come ultimo elemento in 'Nuova integrazione'. Basta sostituire la dichiarazione SearchView con quanto segue.

SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search)); 

Ecco un link alla documentazione MenuItemCompat.

Edit: Ho appena assunto che si sta utilizzando la versione più recente del AppCompat con il supporto per il nuovo widget Toolbar.

+0

Questo funziona grazie :) – A7madev

+1

Puoi farlo con il metodo 'setOnSearchClickListener' su' SearchView'. http://developer.android.com/reference/android/support/v7/widget/SearchView.html – ebarrenechea

23

Se si modifica android:actionViewClass in app:actionViewClass, il codice esistente continuerà a funzionare.

Problemi correlati