2010-11-04 4 views
1

Есть ли способ программно отменить выбор/стереть все, что пользователь выбрал с помощью трекбола/трекпада?Отмените выбор любого выбора трекбола/трекпада

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

ответ

0

Просматривая JavaDoc for View Я вижу ряд функций, связанных с фокусировкой.

void clearFocus(); // drop focus from this view. 
View findFocus(); // finds a view that is a child of this view that has focus, if any 
View focusSearch(int dir); // finds the next view that can take focus in the given direction 
void requestFocus 

Похоже findFocus().clearFocus() должны сделать трюк (если findFocus не происходит вернуть NULL) ... нужно просто описатель другого вида деятельности Посмотреть ... который не должен быть слишком сложно, если это ваш код, или нетривиальным, если это не так.

Если это ваш код, кажется, что вы можете просто добавить clearFocus() к кнопке onClickHandler.

+0

Это кажется мне совершенно логичным, но по какой-то причине он не работает. Я попытался переопределить обработчик onBackPressed и очистить фокус непосредственно перед вызовом finish() ;. Я также попробовал очистить фокус внутри обработчика onActivityResult обратной деятельности. В обоих случаях у меня все еще есть кнопка на задней панели. В фокусе :(Это ТОЛЬКО случается, когда я печатаю в EditText в верхней части Activity. – Andrew

+0

Я считаю, что есть событие с фокусом изменения, которое вы можете прослушать ... ах. Вы переопределяете 'View.onFocusChanged' и/или' View.onWindowFocusChanged'. Информация находится на той же странице, с которой я связан ранее. –