안드로이드 개발 질문/답변
(글 수 45,052)
액티비티가 시작하자마자 소프트 키보드를 화면에 항상 보여주고 싶습니다.
검색해 본 결과,
EditText et = (EditText) findViewById(R.id.txtEdit);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(et, 0);
이 방법을 많이들 추천하시는데, 저만 그런가요?
제 AVD 에서는 액티비티와 함께 키보드가 보이지 않습니다...
(솔직히 뭐가 달라진지 보이지도 않더군요 -_- 똑같이 edittext 를 눌러야만 키보드가 보이더군요..)
이것저것 많이 해 보앗지만 벌써 2시간째 답 없이 헤매고 있네요 ㅠ..
빠른 답변 부탁드려요 ㅠ,
감사합니다.
2010.09.08 12:57:20
액티비티 생성시 포커스가 맞춰지지 않아 딜레이를 줘야한다고 하더라구요.
http://blog.naver.com/oh4zzang?Redirect=Log&logNo=40113209211생성시에
startKeypadThread runnable = new startKeypadThread();
final Thread thread = new Thread(runnable);
thread.setDaemon(true);
thread.start();
를 해주고
러너블 등록하면 됩니다.
class startKeypadThread extends Thread{
public void run(){
try{
sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
EditText et = (EditText) findViewById(R.id.EditText01);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(et, 0);
}
}
하지만 메니피스트의 수정쪽이 훨씬 낫다고 봅니다.
Application에서 해당 액티비티를 선택하면 우측하단에 Window soft input mode를 stateVisible로 수정하면 돼요.
2011.05.16 14:55:40
해결!
다이얼로그 show() 한 후에
핸들러를 사용하여 딜레이를 줍니다.
해당 부분은 이렇습니다..
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(linear.findViewById(R.id.start_date), 0); // 다이얼로그 UI를 정의하여 inflate하였습니다. linear는 그 객체입니다-;
}
}, 150); //150정도 딜레이 주었습니다.