1

[Использование библиотеки поддержки]Android EditText фокус внутри фрагмента в ScreenSlidePageAdapter

При попытке использовать EditText внутри Fragment, который находится в моей ScreenSlidePagerAdapter, в котором несколько Fragment s видны сразу.

Второй Fragment в списке содержит EditText. На Android 4.1 & 4.2 работает отлично. На Android 2.3.6 (не знаю о других версиях) нажатие на EditText вызовет экранную клавиатуру, но не будет фокусировать EditText. Если я перетаскиваю в пределах ScreenSlidePagerAdapter таким образом, что Fragment будет считаться «текущим», то EditText будет вести себя корректно.

Фиксированный макет неприемлем, так как все должно генерироваться динамически, а число Fragment s видимо может варьироваться в зависимости от разных критериев.

Любые идеи о том, как заставить его вести себя правильно и без жесткого кодирования?

+0

Я попробовал следующее: общественной недействительным onFocusChange (View v, boolean hasFocus) { \t if (v == tv) { \t \t ((LobbyAct) ChatFragment.this.getActivity()). Pager.setCurrentItem (1); \t \t \t InputMethodManager inputMgr = (InputMethodManager) getActivity(). GetSystemService (Context.INPUT_METHOD_SERVICE); \t \t \t inputMgr.toggleSoftInput (0, 0); \t \t} \t} Которая в основном работает. Но не срабатывает, когда происходит другое событие, такое как нажатие кнопки. – JSandusky

ответ

0

if (v == tv) 

Из моего предыдущего комментария должен быть связан с фокусом

if (v == tv && hasFocus) 

Полный код:

if (v == tv && hasFocus) { 
    ((LobbyAct)ChatFragment.this.getActivity()).pager.setCurrentItem(1); 
    InputMethodManager inputMgr = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
    inputMgr.toggleSoftInput(0, 0); 
} 
Смежные вопросы