Intereting Posts
Выполнить код только один раз после того, как приложение установлено на Android-устройстве Остановите setrepeat Android alarmmanager Удалить строку на всех языках Android Кто-нибудь получил отслеживание кампаний Google Track «Отслеживаемые каналы (UTM)»? NumberFormatException: неверная ревизия: 24.0.0-alpha1: неверная ревизия: 24.0.0-alpha1 AVD остается застрявшим на "Android запускает" Android: Как освободить ресурсы, когда приложение завершается? Как добавить файл изображения в json-объект? SDK Samsung Pass (fingerprint) – не может использовать пароль как резерв на устройствах Galaxy 6 Расширенная панель инструментов с пользовательским представлением, не отображаемым с полной шириной Как добавить рекуперацию в макет xml Показать выбор из списка предложений в Android searchview Android: обнаружит, когда ScrollView закончил прокрутку и отскок назад? Несколько строковых файлов ресурсов с похожими ключами в Android Сила остановить блокировку читать AsyncTask

SearchManager.getSearchableInfo (getComponentName ()) возвращает null

Я следил за этим руководством для Android , чтобы добавить панель поиска в действие. Настройка выглядит следующим образом:

Рез / меню / activity_main.xml:

<?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> 

Рез / 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" /> 

Запись активности в файле манифеста:

  <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> 

И код в 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; 

Вызов searchManager.getSearchableInfo(getComponentName()); Всегда возвращает null . Я видел это в других вопросах о stackoverflow, однако ни одно из представленных там решений, похоже, не применимо к моему делу.

  • В меню XML есть заголовок <?xml version="1.0" encoding="utf-8"?>
  • XML с возможностью поиска не имеет жестко закодированных строк
  • Переименование пункта меню не работает
  • Чистка и перестройка не делают трюк либо

Любая помощь очень ценится. Благодаря!

Solutions Collecting From Web of "SearchManager.getSearchableInfo (getComponentName ()) возвращает null"

Добавьте его в действие, в котором вы разместили свой SearchView

 <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> 

В моем случае проблема была моей ошибкой во время интеграции с ActionBarSherlock. В этом случае android:actionViewClass должен быть com.actionbarsherlock.widget.SearchView вместо android.widget.SearchView . Я знаю, это звучит глупо, но я потратил 20 минут, пытаясь понять, почему searchView имеет null код в моем коде, который похож на ваш.

Заменить:

 android:actionViewClass="android.widget.SearchView" 

С:

 app:actionViewClass="android.widget.SearchView" 

Потому что app часто используется, если вы используете библиотеку поддержки.