Wie kann ich bei einer von einem SearchView / Widget aufgerufenen Suche zusätzliche Variablen übergeben?

Ich verwende erfolgreich ein Such-Widget in meiner Aktionsleiste, um eine Suche nach dieser Anleitung durchzuführen. Die Suche ist gut, aber ich frage mich, wie man zusätzliche Variablen auf eine Suche übergeben kann. Das gleiche Führer sagt, dass ich onSearchRequested() überschreiben onSearchRequested() , aber das scheint nicht mit einem Such-Widget zu arbeiten.

Meine Anwendung stürzt beim Erstellen der appData weil appData immer null .

Hinweis

onSearchRequested() wird aufgerufen, aber das Bündel macht es nicht zu meiner onCreate() Methode.

Alle Extras aus der übergebenen Absicht sind {user_query=my-query, query=my-query} .

  • Android Service, um Toast zu zeigen
  • Android: Verbesserung der Sensor-Abtastrate durch Verwendung von NDK und Polling
  • Drehen Sie ein ImageView im Uhrzeigersinn mit ObjectAnimator
  • Kann nicht auf cocos2dx mit eclipse für Android auf OSX verknüpfen
  • Das gleiche Element wird nach dem Ausführen von Network Call in einer Schleife zweimal gelöscht
  • Android EGL / OpenGL ES Frame Rate Stottern
  • 3 Solutions collect form web for “Wie kann ich bei einer von einem SearchView / Widget aufgerufenen Suche zusätzliche Variablen übergeben?”

    Es scheint der einzige Weg, dies zu tun ist, um neue Aktivitäten, die in Ihrer Aktivität erstellt werden, die suchfähig ist, abzufangen. Um dies zu tun, überschreiben wir die Methode startActivity() . Wir können dann überprüfen, um sicherzustellen, dass die Aktivität ist in der Tat die Suche Aktivität, dann fügen Sie ein Extra in die Absicht. Der Arbeitscode ist unten.

     @Override public void startActivity(Intent intent) { // check if search intent if (Intent.ACTION_SEARCH.equals(intent.getAction())) { intent.putExtra("KEY", "VALUE"); } super.startActivity(intent); } 

    Sie können dann Ihr Extra, wie Sie irgendwelche anderen extra in Ihrer Suche Aktivität mit:

     mValue = intent.getStringExtra("KEY"); 

    Ich denke, du willst einfach nur benutzen

    String value = intent.getStringExtra(SearchManager.APP_DATA);

    Weil die Absicht das Bündel hält, das du bestanden hast, um die Suche zu starten.

    Sie können die Methode onSearchRequested innerhalb der Activity überschreiben, die die Suche aufruft.

     @Override public boolean onSearchRequested() { Bundle appData = new Bundle(); appData.putBoolean(SearchableActivity.JARGON, true); startSearch(null, false, appData, false); return true; } 

    Dann kannst du diese Daten in der SearchableActivity extrahieren

     Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA); if (appData != null) { boolean jargon = appData.getBoolean(SearchableActivity.JARGON); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.