Переменная подсказка поиска - PullRequest
4 голосов
/ 24 февраля 2010

В моем searchable.xml в моем проекте Android я могу указать подсказку, которая появляется в тексте редактирования, когда текст не написан. Есть ли способ динамически установить это?

В моем действии у меня есть две кнопки поиска, которые вызывают startSearch, передавая свои собственные параметры. Я хотел бы установить подсказки, которые отражают выбранное действие, в зависимости от того, какая кнопка была нажата - скажем, «поиск по названию фильма», «поиск по актерам».

На мой взгляд, это потенциально может быть достигнуто путем передачи параметров в startSearch или использования подхода локализации, так же как я могу поместить одну подсказку в values-fr\strings.xml, может существовать альтернативный файл ресурса поиска для нацеливания. когда была нажата другая кнопка? Или , если searchable.xml можно превратить в селектор, чтобы я мог заставить его работать по-разному в разных состояниях, так или иначе, это было бы хорошо ... Проблема в том, что я не смог найти способ достижения любого из них.

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

UPDATE

Чтобы избежать путаницы, я доволен любым декларативным или программным подходом изменения подсказки в EditText mSearchTextField в SearchDialog. Что мне неясно, так это то, как ссылаться на этот EditText. Комментарии в коде, на который ссылается код, гласят: «Это все еще контролируется SearchManager ...», но я также не могу найти ссылку на то, как им можно управлять из SearchManager.

Ответы [ 4 ]

1 голос
/ 10 марта 2010

AFAIK, Нет никакого способа получить доступ к EditText, предоставленному для поиска.

1 голос
/ 24 февраля 2010

XML для Android не слишком хорошо подходит для динамизма; Вам, вероятно, придется решить эту проблему в коде Деятельности.

Вы можете сделать это в коде, изменив подсказку в EditText, используя setHint(). Тогда вам просто нужен какой-нибудь слушатель на кнопках (или, возможно, Spinner). Для кнопки вы просто используете setOnClickListener(); для прядильщика setOnItemSelectedListener() было бы более подходящим.

0 голосов
/ 25 июня 2012

Можете ли вы добавить метаданные к действию во время выполнения? Если вы можете, тогда вы можете назначить другой файл XML для поиска.

0 голосов
/ 11 марта 2010

Я не уверен, как выглядит ваш startSearch, но вот что вы ищете:

private void startSearch(CharSequence hint) {
    EditText searchBox = (EditText)findViewById(R.id.my_edit_text);
    searchBox.setHint(hint);
...