2012-08-16 5 views
21

Ich entwickle Schnittstelle Such-Widget basierend auf offiziellen Tutorial: http://developer.android.com/guide/topics/search/search-dialog.htmlSearch-Widget auf der Aktionsleiste auslöst nicht meine Suchaktivitäten

Problem: Meine SearchableActivity nicht ausgelöst wird erhalten, wenn ich meine Abfrage und drücken Sie die Eingabetaste Ok/eingeben.

Manifest für SearchableActivity:

<activity android:name="SearchableActivity" android:launchMode="singleTop" > 
     <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
     </intent-filter> 

     <meta-data 
      android:name="android.app.searchable" 
      android:resource="@xml/searchable" /> 
</activity> 

xml/searchable.xml

<?xml version="1.0" encoding="utf-8"?> 
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
android:hint="Search" android:label="@string/app_name" > 
</searchable> 

Haupttätigkeit Lifecycle-Methode, die Symbole auf der Aktionsleiste fügt (funktioniert):

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.main, menu); 

    // Get the SearchView and set the searchable configuration 
    SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

    // Do not iconify the widget;expand it by default 
    searchView.setIconifiedByDefault(false); 

    return true; 
} 

SearchableActivity.java

public class SearchableActivity extends ListActivity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.d("MY", "search activity triggered"); 
    } 

} 

Hinweis: Der Such-Widget auf der Aktionsleiste angezeigt und ich kann Daten einfügen, aber die OK/Enter nimmt mich nicht auf die SearchableActivity (doesn‘ t triggert onCreate der DurchsuchbarenAktivität).

Fehle ich etwas oder ist das offizielle Tutorial fehlerhaft?

Antwort

58

Problem gelöst: Das Tutorial scheint einen wichtigen Teil zu verfehlen: <meta-data android:name="android.app.default_searchable" android:value=".MySearchActivityName" /> muss in <application> Tags in Manifest hinzugefügt werden, damit das Such-Widget korrekt funktioniert.

EDIT - auch ein Hinweis auf ein Problem zu lösen, wenn die ActionBar Suche auf Daten Posting nicht ausgelöst wird (kein Fehler auch immer gegeben und Dokumentationen bekommen haben kein Wort über diese Einschränkung): in Android searchable.xml Datei: Hinweis und Android: Label-Attribute MUSS Verweise auf Zeichenfolgen in strings.xml sein. Source

+0

sollten Sie Ihre eigene Antwort akzeptieren dann –

+0

Ich kann im Moment nicht irgendeine Art von Limit (morgen werde ich in der Lage sein, es zu akzeptieren). –

+3

Ich hatte ein ähnliches Problem.Sie können die in die Hauptaktivität einfügen, und es wird weiterhin funktionieren. Nur ein FYI. – dbrown0708

0

Sie sollten onOptionsItemSelected und wahrscheinlich onSearchRequested in Ihrer Aktivität überschreiben.

+0

Änderte meine Antwort. –

+1

Ich benutze [Search Widget] (http://developer.android.com/guide/topics/search/search-dialog.html#UsingWidgetWidget) nicht [Suchdialog] (http://developer.android.com/ guide/topics/search/search-dialog.html # AufrufingTheSearchDialog) –

+0

zeigen Sie uns Ihre 'onOptionsItemSelected' –

0

Wenn die Datei "xml/searchable.xml" nicht korrekt formatiert ist (z. B. "suchbares" -Tag ist nicht in Kleinbuchstaben), wird während der Ausführung keine Fehlermeldung zurückgegeben und "SearchableActivity" wird nicht angezeigt aufgerufen.

Verwandte Themen