2014-10-25 13 views
16

I Suche in ActionBar umgesetzt, bevor mit appcompat.v7 aber wenn ich die Suche mit Support-Bibliothek verwenden möchten v7 zeigt es null AusnahmeSuche mit AppCompat

In Stil

<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 Java-Klasse:

@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); 
} 

Meine Frage ist, wie in Search onCreateOptionsMenu erklären können Abfrage Hörer einstellen?

+3

Wie Espen Riskedal sagte: "Android android: actionViewClass zu app: actionViewClass" ist auch wichtig. – gio

Antwort

24

Sie sollten die statischen Methoden in MenuItemCompat verwenden, um mit allen AppCompat-Menüelementen umzugehen. Dies wurde unter this blog post als letzter Punkt unter "Neue Integration" erwähnt. Ersetzen Sie einfach Ihre SearchView Deklaration durch die folgenden.

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

Hier ist ein Link auf die MenuItemCompat Dokumentation.

Edit: Ich nehme nur Sie die neueste Version von AppCompat verwenden, um mit der Unterstützung für die neuen Toolbar Widget.

+0

Dieser funktioniert Danke :) – A7madev

+1

Sie können es mit der 'setOnSearchClickListener' Methode auf dem' SearchView' machen. http://developer.android.com/reference/android/support/v7/widget/SearchView.html – ebarrenechea

23

Wenn Sie android:actionViewClass zu app:actionViewClass ändern, wird Ihr bestehender Code weiterhin funktionieren.

Verwandte Themen