나는 같은 문제가 있었다. 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 (에뮬레이터)에서 테스트했습니다.
이 접근 방식은 나에게 많은 고통을 덜어 주었다.