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:

  • Webservice-Anmeldeinformationen - OpenID / Android AccountManager?
  • Fix Android-Kamera-App-Seitenverhältnis und Rotation
  • So fügen Sie zusätzliche Test-Runner-Parameter in Android Studio 2.3 instrumentierte Tests hinzu
  • Fragment hat keine Ansicht erstellt
  • FindViewById vs View Holder Pattern im ListView-Adapter
  • Android ViewPager Mit verschiedenen Animationen wie zoomen, verblassen etc
  • <?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!

  • Speicherung großer Menge von Bildern in Android
  • Hinzufügen eines Weblinks zu einem TextView-Widget
  • Daten im lokalisierten Format auf Android anzeigen
  • Wie programmgesteuert herunterladen eine Html-Seite in Android und bekommen ihre Html?
  • ActionBarSherlock - Tabs erscheinen über eine Aktionleiste mit benutzerdefinierter Ansicht
  • Ist Content Provider eine Implementierung von Repository Pattern?
  • 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.