2012-07-03 4 views
20

최신 Jelly Bean 에뮬레이터의 동작에 문제가 있습니다. 내 애플 리케이션에 여러 EditTexts 있습니다. OnEditorActionListener은 사용자가 키보드에서 Enter 키를 누를 때 특수 처리를 제공합니다. 이것은 ICS까지 작동했지만, 지금은 Jelly Bean에서 청취자 콜백 메소드 onEditorAction()이 더 이상 호출되지 않습니다. EditText에는 새 줄만 삽입됩니다.Jelly Bean 에뮬레이터에서 Enter 키를 누른 후 onEditorAction()이 호출되지 않습니다.

EditText testEditText = new EditText(context); 
testEditText.setOnEditorActionListener(new OnEditorActionListener() { 

    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     Log.d(TAG, "onEditorAction() called"); 
     return false; 
    } 
}); 
addView(testEditText); 

이 젤리 빈의 버그 :

이이 방법을 재현 할 수 있습니까? 아니면 에뮬레이터에서? 아니면 의도적으로 행동이 바뀌 었습니까? 나는이 몇 가지를 테스트 한

: null keyevent and actionid = 0 in onEditorAction() (Jelly Bean/Nexus 7)

+1

이 샘플 프로젝트는 예상대로 동작 : https://github.com/commonsguy/cw-omnibus/tree/master/ActionBar/ActionBarDemo – CommonsWare

+0

@CommonsWare : 당신이, 내가 대한 해결 방법을 발견 감사 제 문제가 있습니다. 다음 작업을 수행하면 ENTER 키가 onEditorAction()을 트리거하는 가상 키보드의 GO 키로 바뀝니다. editText.setRawInputType (InputType.TYPE_CLASS_TEXT); editText.setImeOptions (EditorInfo.IME_ACTION_GO); – Hendrik

+1

또는 XML 형식 : android : imeOptions = "actionGo"\t \t android : inputType = "text" – Hendrik

답변

32

다른 사람이 질문을 발견 한 경우 : 다른

호기심 누군가가 여기에 젤리를 실행하는 넥서스 7, 예상치 못한 변수와 메소드가 호출되는 것을 기록하지만, 번 반복하고 Jelly Bean 에뮬레이터에서 가상 키보드에서 Enter 키를 누르면 리스너 콜백 메소드 인 onEditorAction()이 더 이상 호출되지 않습니다.

위에서 언급 한 것처럼 가능한 해결책이나 해결 방법은 Enter 키를 사용 가능한 동작 키 중 하나로 대체하는 것입니다. 여전히 onEditorAction()을 트리거합니다. 또한 입력 유형을 지정해야했습니다.

editText.setRawInputType(InputType.TYPE_CLASS_TEXT); 
editText.setImeOptions(EditorInfo.IME_ACTION_GO);
<EditText 
... 
android:imeOptions="actionGo" 
android:inputType="text" /> 
+2

그리고 전화가 imeActions를 전혀 지원하지 않으면 어떻게해야합니까? (없는 많은 장치가 있습니다.) – Darpan