2009-10-18 3 views
6

Я пытаюсь сделать свое приложение реализованным встроенным быстрым поиском, аналогично тому, как это делается в приложении «поиск/поиск/вызов ApiDemos». Я пробовал все от попыток следовать различным примерам, копируя код точно так же, как и в ApiDemos.android app search button

Все, что я нашел для первых, связано с более старыми версиями SDK и просто не работает. Что касается вещей, которые я могу реально запустить и посмотреть, работает в ApiDemos, я пытался копировать следующие

com.example.android.apis.app.SearchInvoke.java 
com.example.android.apis.app.SearchQueryResults.java 
com.example.android.apis.app.SearchSuggestionSampleProvider.java 

res/layout/search_invoke.xml 
res/layout/search_query_results.xml 
res/values/arrays.xml 
res/values/strings.xml 
res/xml/searchable.xml 

... and everything under "Search Samples" in AndroidManifest.xml 

Это копирование получает меня вид, что выглядит точно так же, как тот, я столкнулся при работе ApiDemos, но когда я нажимаю кнопку поиска, в окне быстрого поиска Android всегда открывает окно браузера с результатами поиска Google для данного запроса. Я просто не могу найти критический компонент в ApiDemos, который сообщает android, что я хочу использовать собственный код для обработки запроса на поиск.

Я бы очень признателен за помощь в этом вопросе. Как документация, так и другие онлайн-ресурсы кажутся очень недостающими, когда дело доходит до этого.

Спасибо.

ответ

10

Для справки, четыре месяца (и бог знает, сколько попыток) позже, я нашел часть документации, которую я пропустил, которая содержала все поле поиска, запускающее результаты поиска в браузере, а не передавая их в свою деятельность. Это все сводится к маленькому уведомления нашли here:

Обратите внимание, что все видимые пользователем строки должны быть представлены в виде «@string» ссылки. Жестко закодированные строки, которые не могут быть локализованы, не будут работать должным образом в метаданных поиска.

+0

Вау, спасибо. Именно это исправила мою проблему - она ​​не принимала жестко заданные строковые значения во время тестирования. Я просто преобразовал его, чтобы использовать refs в strings.xml, и он работает не так. – DustinB

+0

@ Давид Большое спасибо. Я застрял больше дня, потому что у меня были жестко закрепленные строки. Еще раз спасибо. :) – FireAndIce

1

Сначала попробуйте прочитать this. Если это не поможет, вы можете попробовать посмотреть на search example из одной из моих книг - этот пример интегрируется с полем быстрого поиска, и, возможно, это даст вам больше подсказок.

+0

Hi. Спасибо за ваш комментарий, но ни ресурсы, с которыми вы связаны, ни код примера, который вы предоставили, не работают для меня. Кнопка поиска вызывает глобальный поиск ui, который я хочу, но написание чего-либо в нем дает только предложения по умолчанию, а нажатие кнопки поиска всегда открывает веб-представление. Я хочу, чтобы захватить нажатие кнопки поиска и создать представление результата моего собственного. Мне даже не нужен провайдер предложений, если я могу просто заставить поиск работать. Конечно, это должно быть вполне выполнимо ...? –

+0

Нет, это не выполнимо, если вы не модифицируете прошивку, или, возможно, записываете домашнее приложение для замены с полем поиска, которое ведет себя так, как вы хотите. – CommonsWare

+0

Тогда, разве это не то, что, скажем, рынок делает? Или демоверсию поиска в ApiDemos. Это оба примера поиска, которые появляются при нажатии кнопки поиска устройства, и когда кнопка нажата в появившемся представлении, они генерируют собственное представление результатов, а не открывают веб-просмотр с регулярными результатами поиска Google ...? –

0

Я был неправ, прежде чем ... документация SDK имеет thurough объяснение в документации для SearchManager, что я предлагаю вам взглянуть на. Кроме того, как упоминалось в CommonsWare, blog entry также является хорошим ресурсом.