Не уверен, что вы нашли ответ на этот вопрос, но у меня возникла связанная с этим проблема, связанная с тем, что я пытался отобразить пользовательский интерфейс поиска из меню табуляции (т. Е. Поиск должен отображаться независимо от того, что извкладка активна), и она не обнаруживается.После долгих исследований и тщательного прочтения статьи 'Поиск' я заметил следующий абзац:
По умолчанию диалоговое окно поиска недоступно для каждого действияваше приложение.Скорее, диалоговое окно поиска представляется пользователям только тогда, когда они запускают поиск из контекста поиска вашего приложения.Доступный для поиска контекст - это любое действие, для которого вы объявили доступные для поиска метаданные в файле манифеста.Например, сама доступная для поиска активность (объявленная во фрагменте манифеста выше) является контекстом с возможностью поиска, поскольку она включает метаданные, которые определяют конфигурацию с возможностью поиска.Любая другая активность в вашем приложении по умолчанию не является поисковым контекстом и, следовательно, не раскрывает диалоговое окно поиска.Тем не менее, вы, вероятно, хотите, чтобы диалоговое окно поиска было доступно из других ваших действий (и для запуска доступного для поиска действия, когда пользователь выполняет поиск).Вы можете сделать именно это.
Вы также можете контролировать, какие действия обеспечивают поиск на более детальном уровне.Чтобы указать в качестве контекста поиска только отдельную активность, поместите имя с именем «android.app.default_searchable» внутри соответствующего элемента (а не внутри элемента).Хотя это и необычно, вы также можете создать более одного доступного для поиска действия и предоставить каждое из них в различных контекстах вашего приложения, либо объявив различное доступное для поиска действие в каждом элементе, либо объявив поисковое действие по умолчанию для всего приложения, а затем переопределив его с помощьюэлемент внутри определенных видов деятельности.(Вы можете сделать это, если вы хотите искать разные наборы данных, которые не могут быть обработаны одним и тем же искомым действием, в зависимости от текущего открытого действия.)
Короче говоря, вам понадобитсяпоиск метаданных для конкретной деятельности, с которой вы звоните onSearchRequested()
.Мало того, что метаданные в этих других действиях должны иметь имя default_searchable и упоминать поисковое действие, а не XML-файл с возможностью поиска, например:
<meta-data android:name="android.app.default_searchable"
android:value=".SearchScreen" />
Заметил, что у вас есть мета поиска-данные неверны в двух местах.