2012-12-06 3 views
1

EditText가 있는데 setOnKeyListener를 사용하여 키 입력을 수신하려고 시도하므로 Enter 키 누르기를 감지하면 일부 작업이 수행됩니다. 하드 키보드 및 에뮬레이터에서는 정상적으로 작동하지만 내 Galaxy Nexus에서는 정상적으로 작동하지 않습니다.Android Jelly Bean의 EditText에서 소프트 키보드를 사용하여 편집 할 때 "입력"문자를 어떻게 감지합니까?

setOnKeyListener에 대한 설명서에 "소프트웨어 입력 방법의 키 누름은 일반적으로이 수신기의 메서드를 트리거하지 않습니다"라는 메시지가 표시되어 이유를 설명합니다.

Building Your First App 자습서에서와 같이 화면에 '완료'버튼을 명시 적으로 추가하고 싶지 않습니다.

레이아웃 xml에서 android:inputType="text" 속성을 사용하도록 설정 했으므로 원하는 효과가있는 것 같습니다. 이것이 올바른 접근법으로 간주됩니까? 어디에서 문서화되어 있습니까? 모든 장치에서 작동합니까? 더 좋은 방법이 있습니까?

myEditText.setOnKeyListener(new View.OnKeyListener() { 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_DOWN) 
       if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) || 
        (keyCode == KeyEvent.KEYCODE_ENTER)) { 
        // Process the entered text here 
        myEditText.setText(""); 
        return true; 
       } 
      return false; 
     } 
    } 

이것은 Professional Android 4 Application Development의 제 4 장에서 할일 목록 예를 기반으로 : 여기

내가 내 활동에 사용하고 코드입니다.

+0

확인이 질문에, 그것은 도움이 될 수 가 http://stackoverflow.com/questions/2004344/android-edittext-imeoptions-done-track-finish-typing –

+0

내가 그 일을 본 적이있는 어떻게 android : inputType = "text"를 설정했는지 (그 질문을 읽은 후 몇 가지 문서를 따라). 작동하는 것 같습니다. 그러나이 작업을 수행하는 "올바른"방법이 무엇인지 분명하지 않습니다. "onKey"대신 "onEditorAction"을 사용해야합니까? 이것이 모든 장치에서 작동합니까? –

답변

1

실제로는 android:inputType="text"이 올바른 접근 방법입니다.