오늘의 삽질 – AlertDialog의 EditText에 키보드 보여주기

AlertDialog에 넣었던 EditText에서 포커스는 가있어도 소프트웨어 키보드가 나타나지 않는 증상이 있어서
구글링을 통해 온갖 키보드를 나타내기 위한 시도를 하였다.

final View innerView = View.inflate(MainActivity.this, R.layout.name_edit_popup, null);
final EditText editText = (EditText)innerView.findViewById(R.id.nameEdit);
 
final AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
	.setCustomTitle(innerView)
	.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
 
		@Override
		public void onClick(DialogInterface dialog, int which) {
			// something
		}
	}).create();
 
// 시도 1
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
 
// 시도 2
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }
});
 
// 시도 3
dialog.setOnShowListener(new OnShowListener() {
 
    @Override
    public void onShow(DialogInterface dialog) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
    }
});
 
dialog.show();

그런데도 키보드가 나타나지 않아서 멘붕하고 있었는데…


...
final AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
.setCustomTitle(innerView)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
...

setView가 아니라 setCustomTitle을 사용하고 있었음을 발견하였다…

CustomTitle에 넣은 EditText에서는 키보드를 보여주지 않는 듯하니 참고하길

FacebookTwitterGoogle+