Non c'è un sacco di codice di andare fuori di qui, ma mi sono imbattuto in questa situazione io e qui è quello che è successo a me:
stavo usando la libreria compat v7 al fine di avere un ActionBar su Android 2 Sto implementando l'interfaccia di ricerca.
Codice Configurazione di base (in onCreateOptionsMenu()
)
SearchManager searchManager =
(SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
SupportMenuItem searchMenuItem = ((SupportMenuItem) menu.findItem(R.id.menu_search));
SearchView searchView = (SearchView) searchMenuItem.getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(activity.getComponentName()));
inappropriato Codice
searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
// on search expand stuff
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
// on search collapse stuff
return true;
}
});
Purtroppo il problema qui è che noi chiediamo un metodo che viene supportato solo in v14 così abbiamo ottenere un errore di runtime "strano" quando tenta di caricare alcune classi che vengono utilizzate in modo implicito. Questa non è una buona spiegazione, ma fondamentalmente è lo stesso motivo per cui abbiamo bisogno di usare getSupportActionBar()
invece di getActionBar()
.
Buono Codice
searchMenuItem.setSupportOnActionExpandListener(new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
// do work
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
// do work
return true;
}
});
non riesce a trovare quella classe. Hai quella libreria nella tua cartella 'libs'? –
Sì, ho la classe SearchView nella libreria, ho importato la libreria android-support-v7-appcompat per aggiungere l'API actionbare pre 11 – Bombolo
Hai aggiunto la libreria di supporto v7? – Azrael94