SearchManager.getSearchableInfo (getComponentName ()) gibt null zurück

Ich habe diesen Android-Guide verfolgt , um eine Suchleiste einer Aktivität hinzuzufügen. Das Setup sieht so aus:

Res / menu / activity_main.xml:

  • Spielen html5 Audio in Android Browser
  • Dynamisch hinzufügen und entfernen Tabs in TabLayout (Material Design) Android
  • Haben Sie einen deaktivierten onClick?
  • Android SD Card Schreibberechtigung mit SAF (Storage Access Framework)
  • Können Sie feststellen, welche Kontaktänderungen w / registerContentObserver?
  • ShouldOverrideUrlLoading in WebView für Android läuft nicht
  • <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/search" android:title="@string/menu_search" android:icon="@android:drawable/ic_menu_search" android:showAsAction="collapseActionView|ifRoom" android:actionViewClass="android.widget.SearchView" /> <item android:id="@+id/menu_settings" android:orderInCategory="100" android:showAsAction="never" android:title="@string/menu_settings" android:icon="@drawable/ic_menu_settings"/> </menu> 

    Res / xml / searchable.xml:

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

    Aktivitätseintrag in Manifestdatei:

      <activity android:name="de.ivu.realtime.app.activity.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> <meta-data android:name="android.app.default_searchable" android:value="de.ivu.realtime.app.activity.MainActivity" /> </activity> 

    Und der Code in MainActivity:

     @SuppressLint("NewApi") @Override public boolean onCreateOptionsMenu(Menu menu) { this.getMenuInflater().inflate(R.menu.activity_main, menu); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); SearchableInfo searchableInfo = searchManager.getSearchableInfo(getComponentName()); searchView.setSearchableInfo(searchableInfo); } return true; 

    Der Aufruf zum searchManager.getSearchableInfo(getComponentName()); Immer wieder null . Ich habe das in anderen Fragen zum Stackoverflow gesehen, aber keiner der hier vorgestellten Lösungen scheint sich bei meinem Fall zu bewerben.

    • Das Menü XML hat eine <?xml version="1.0" encoding="utf-8"?> Header
    • Das durchsuchbare XML hat keine hartcodierten Strings
    • Umbenennen der Menüpunkt funktioniert nicht
    • Reinigung und Wiederaufbau macht auch nicht den Trick

    Jede Hilfe wird sehr geschätzt. Vielen Dank!

  • Wie kann ich Audio auf Webseite aufnehmen (iOS, Android, PC / Mac) - kein Blitz
  • Wo ist Androide Studio Gebäude meine .apk Datei?
  • Warum ist R nicht existieren Fehler kommen in Android?
  • Wie drucke ich den Inhalt der Anfrage von httprequest?
  • Google App-Entwickler: Ändern der Standardsprache von App
  • IdlingResource Espresso mit RxJava
  • 3 Solutions collect form web for “SearchManager.getSearchableInfo (getComponentName ()) gibt null zurück”

    Fügen Sie es der Aktivität hinzu, in der Sie Ihr SearchView gesetzt haben

     <meta-data android:name="android.app.default_searchable" android:value=".activity_that_handles_the_search" /> <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> 

    In meinem Fall war das Problem mein Fehler bei der Integration mit ActionBarSherlock. In diesem Fall android:actionViewClass sollte com.actionbarsherlock.widget.SearchView statt android.widget.SearchView . Ich weiß, das klingt dumm, aber ich habe 20 Minuten damit verbracht, herauszufinden, warum searchView null in meinem Code ist, der deinem ähnlich ist.

    Ersetzen:

     android:actionViewClass="android.widget.SearchView" 

    Mit:

     app:actionViewClass="android.widget.SearchView" 

    Denn app wird oft verwendet, wenn Sie Support-Bibliothek verwenden.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.