2013-04-06 64 views
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將表現正確。

固定佈局是不可接受的,因爲所有東西都必須動態生成,可見的數量可以根據不同的標準而有所不同。

關於如何讓它正常運行而不需要硬編碼的任何想法?

+0

我已經試過如下: 公共無效onFocusChange (視圖v,布爾hasFocus){ ((LobbyAct)ChatFragment.this.getActivity())。pager.setCurrentItem(1);如果(v == tv){ \t \t (InputMethodManager)getActivity()。getSystemService(Context.INPUT_METHOD_SERVICE);方法如下:InputMethodManager inputMgr =(InputMethodManager)getActivity()。getSystemService(Context.INPUT_METHOD_SERVICE); \t \t \t inputMgr.toggleSoftInput(0,0); \t \t} \t} 其中大部分工作。但是,如果發生按鈕按下等其他事件,則失敗。 – JSandusky 2013-04-06 04:06:23

回答

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); 
}