私も同じ問題を抱えていました。editText VISIBILITYがGONEからVISIBLEに変更された直後に、フォーカスを設定してソフトキーボードを表示する必要がありました。私は次のコードを使用してこれを達成しました:
new Handler().postDelayed(new Runnable() {
public void run() {
// ((EditText) findViewById(R.id.et_find)).requestFocus();
//
EditText yourEditText= (EditText) findViewById(R.id.et_find);
// InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
yourEditText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0));
yourEditText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));
}
}, 200);
それは私にとって100msの遅延で機能しますが、遅延なしで、または1msの遅延だけで失敗しました。
コードのコメント部分は、一部のデバイスでのみ機能する別のアプローチを示しています。OSバージョン2.2(エミュレータ)、2.2.1(実際のデバイス)、および1.6(エミュレータ)でテストしました。
このアプローチにより、多くの苦痛がなくなりました。