2013-09-07 3 views
1

Activity에 나는 AutoCompleteTextView의 드롭 다운 목록이 있습니다. 사용자가 항목을 선택하면 새로운 Activity이 시작됩니다. 다음에 Activity에 많은 내용이 있으므로 시작하기 전에 약 0.5-1 초의 지연이 있습니다. 항목을 선택한 직후 소프트 키보드를 숨기려고합니다.소프트 키보드를 숨길 때 지연

actvActionSearch.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> adapter, View v, 
       int position, long id) { 
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(actvActionSearch.getWindowToken(), 0); 
      //do stuff to prepare and start next Activity 

     } 
    }); 

그러나 소프트 키보드는 숨겨져 있습니다. 동시에 다음에 Activity이 시작됩니다. 이 지연은 어디에서 발생합니까? 키보드를 숨기는 것이 내가 수행하는 첫 번째 작업입니다

답변

2

InputMethodManager을 시스템 서비스로받는 방법에 유의하십시오.

hideSoftInputFromWindow에 대한 전화는 시스템의 Service에서 수행된다는 것을 의미합니다. 즉 앱의 배경을 따라 항상 백그라운드에서 실행된다는 것을 의미합니다. 즉 키보드를 숨기면 앱을 실제로 실행중인 앱처럼 병렬로 실행됩니다. 활동 만들기.

+0

실제로 onCreate()에서 초기화하고 위에 게시 한 메서드가 아니라는 것이 중요합니까? 그렇지 않다면 키보드 닫기에서이 지연을 피하는 해결책이 있습니까? – Droidman

+0

초기화 된 것을 의미합니까? 한 가지 해결책은 활동을 시작하기 전에 키보드가 표시되는지 감지하려고 시도하는 것입니다. 이 게시물을 키보드를 감지하는 방법을 참조하십시오 : http://stackoverflow.com/questions/2150078/how-to-check-visibility-of-software-keyboard-in-android – wangyif2

+0

해당 시스템 서비스에 대한 참조를 얻는 것을 의미합니다. imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); – Droidman