2012-03-06 2 views
1

Я новичок в разработке Android и Eclipse, но не новичок в разработке программного обеспечения в целом.Обновление значка клавиатуры

Как мой первый реальный проект, чтобы преодолеть кривую обучения, я модифицирую мягкую клавиатуру SDK, чтобы включить функциональность «макро».

Основная функциональность работает правильно. Но у меня возникли проблемы с тем, чтобы значок клавиатуры был обновлен в одной из двух ситуаций.

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

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

Во второй ситуации я нажимаю функциональную клавишу, значок меняется, чтобы обозначить «активная функция», затем нажмите клавишу букв. Строка макроса вводится в любом текстовом поле правильно, в коде я затем меняю состояние «функция» на неактивное и обновляю значок.

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

Я пробовал целую кучу разных вещей - безрезультатно.

Что происходит, что предотвращает обновление этой иконки в этой ситуации?

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

Любые советы и предложения приветствуются.

Thanks, Barry.

ответ

2

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

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

У меня была такая проблема раньше. Попробуйте воссоздать свой объект Keyboard - это также воссоздает представление. функция createKeyFromXml в классе Keyboard - это то, где фактически создается «ключ». Если вы помещаете журналы в эту функцию, она вызывается только один раз для каждого ключа, когда объект создается или отображается в первый раз.

+0

Я посмотрю на это. Но, интересно, почему, в моей первой ситуации многократного нажатия клавиши Fn, значок меняется правильно.Я не думаю, что клавиатура воссоздается каждый раз, когда я нажимаю клавишу Fn. На самом деле это тот же физический код, который меняет значок для обеих ситуаций 1 и 2. – user1247254

+0

Используете ли вы разные макеты для активного и неактивного состояния? или тот же самый? – jsimpson

+0

Привет, такой же макет. – user1247254

Смежные вопросы