안드로이드 액티비티 처음 실행시 키보드 자동 띄우기

windowsSoftInputMode 에서 stateVisible 이나 stateAlwaysVisible 속성을 주면 액티비티가 처음 실행시 말고도 홈화면으로 나갔다가 다시 앱을 켜는 경우에도 키보드가 자동으로 올라옵니다...

앱을 처음 실행했을 경우에만 키보드를 띄우고 싶어서

    @Override
    protected void onStart() {
        searchBox.requestFocus();
        InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        // im.showSoftInput(searchBox, 0);
        im.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
        super.onStart();
    }

이런 식으로도 시도해봤는데 이렇게 할 경우에는 키보드가 올라오지 않더군요. 키보드를 띄우는 코드 자체는 버튼에 onClickListener를 등록해서 테스트 해보면 정상적으로 키보드가 올라오는 것으로 보아 문제가 없는 듯 한데...

앱을 처음 실행 했을 때에만 키보드를 띄워주려면 어떻게 해야 할까요...?

1답변

  • 안타깝게도 activity를 만들고 있는 상황에는 해당 요청이 무시되어지는 것 같습니다. activity가 화면에 보여지는 순간은 life cycle 상 onCreate -> onStart -> onResume 이 모두 끝나야 합니다. 그렇기에 onResume에 해당 코드를 위치시키거나 딜레이를 좀 주셔서 요청하셔야 할 겁니다.

    searchBox.postDelayed(new Runnable() {
            @Override
            public void run() {
                InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                keyboard.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 
            }
        },200);
    

    이 코드를 onStart() 나 onCreat()에 넣어보세요.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.