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

조회수 1196회

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()에 넣어보세요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)