11

現在、TabHost4つのタブを含むがあります。一部のフラグメントではEditText、レイアウト内に多数のビューがあります。

ハードウェア キーボードを使用していずれかのビューに入力しようとするとEditText、 からフォーカスが奪われ、EditTextの現在アクティブなタブに移動することがわかりましたTabHost。これは、タブのある画面でのみ発生します。これを解決するための迅速で簡単な方法はありますか?

4

3 に答える 3

3

これはかなり長い間既知のバグでした:

http://code.google.com/p/android/issues/detail?id=2516

回避策は、タブが選択された後に強制的にTabHostフォーカスを失うことです。これを行うには、 に を設定し、OnTabChangeListenerメソッドTabHostを呼び出します。clearFocusonTabChanged

tabHost.setOnTabChangedListener(new OnTabChangeListener(){    
    public void onTabChanged(String tabID) {    
        tabHost.clearFocus(); 
    }   
}); 

編集: これが機能しない場合は、別の方法を試すことができます。代わりに EditText フィールドに強制的にフォーカスを当てる:

OnTouchListener focusHandler = new OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent event) {
        // TODO Auto-generated method stub
        view.requestFocusFromTouch();
        return false;
    }
};

editText.setOnTouchListener(focusHandler); //For each EditText with this issue
于 2013-04-04T12:39:14.630 に答える