2012-01-13 2 views
4

Hi,
Android 4 (ICS) предлагает элемент вида ActionBar. Используя ActionBar, я создал виджет поиска, в котором я могу ввести текст, чтобы вызвать удаленный поиск. Если нажать на значок лупы в этой ActionBar, чтобы открыть виджет поиска текстовое поле, происходят две вещи: то, отображаетсяПанель управления Android: нажмите кнопку «Вверх» программно

  1. softkeyboard
  2. кнопку «домой» (значок приложения в левом верхнем углу) меняет свою функциональность кнопки «вверх». «Вверх» означает, что вы отменить последнее действие (в данном случае: открытие поискового виджета TextField)

Если нажать на кнопку «вверх» поиск виджет падает так, что текстовое поле исчезает. В тот же момент кнопка «вверх» изменяет функциональность, чтобы действовать как «кнопка дома». Это поведение описывает поведение по умолчанию Android 4 ActionBar с помощью подключенного виджета поиска.

Использование аппаратной кнопки «назад» вместо мягкой кнопки «вверх», клавиатура исчезает, но виджет поиска остается открытым. Также кнопка «вверх» не изменяется на «домашнюю кнопку».

Мой вопрос: Как я могу запустить кнопку «вверх», щелкнув по ActionBar программно? Если бы я мог это сделать, я мог бы свернуть текстовое поле виджета поиска и вернуть кнопку «вверх», чтобы снова стать «домашней кнопкой», если пользователь нажимает кнопку «Назад» оборудования.

В этом примере показан «кнопка дома» слева и закрытый виджет поиска «значок лупы» справа. Если пользователь нажимает лупу, появляется текстовое поле, а кнопка «home» становится кнопкой «вверх».

Заранее благодарен!

enter image description here

+0

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

ответ

-1

Вы можете вызвать щелчок на любом виде программно путем вызова performClick() на View.

См. Документацию performClick().

+4

Да, я уже пробовал это. Проблема заключается в том, что для панели действий нет объекта просмотра. ActionBar oject (activity.getActionBar()) предлагает только метод getCustomView(). Если вы не используете customView, null будет возвращен. Я также попробовал activity.getActionBar(). SetDisplayOptions (ac.getActionBar(). DISPLAY_SHOW_HOME); Это также не работает. – ninsky

+0

Эй @ LuxuryMode. Если у вас есть советы по выбору этого вида, можете ли вы поделиться им? Благодаря! –

0

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

1

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

Чтобы перейти, когда пользователь нажимает значок приложения, вы можете использовать статический метод класса NavUtils, navigateUpFromSameTask().

Таким образом, вы можете вручную вызвать

NavUtils.navigateUpFromSameTask(this); 

для выполнения кнопки домой нажмите программно.