2012-07-03 14 views
20

'a basılmaz. En son Jelly Bean emülatörünün davranışında bir sorun yaşıyorum. Uygulamamda birkaç tane EditTexts var. Bir kullanıcı, klavye üzerindeki ENTER tuşuna bastığında, OnEditorActionListener özel işlem sağlar. Bu, ICS'ye kadar çalıştı, ama şimdi Jelly Bean'de dinleyici geri çağırma yöntemi onEditorAction() artık aramıyor. EditText'a yalnızca yeni bir satır eklenir.onEditorAction(), Enter tuşuna basıldıktan sonra, Jelly Bean emülatörü

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); 

bu Jelly Bean bir hata mı:

Bu, bu şekilde çoğaltılabilir? Ya da emülatörde? Veya davranış kasıtlı olarak değiştirildi mi? Ben bu birkaç test ettik

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

+1

Bu örnek proje beklendiği gibi davranır: https://github.com/commonsguy/cw-omnibus/tree/master/ActionBar/ActionBarDemo – CommonsWare

+0

@CommonsWare: Eğer ben için geçici bir çözüm buldu ederiz benim kodunuzdaki sorun. Aşağıdakileri yaparsam, ENTER tuşuna, sanal klavyede bir GO tuşu ile değiştirilir ve bu da onEditorAction(): editText.setRawInputType (InputType.TYPE_CLASS_TEXT) tetikler; editText.setImeOptions (EditorInfo.IME_ACTION_GO); – Hendrik

+1

Ya da XML'de: android: imeOptions = "actionGo" \t \t android: inputType = "text" – Hendrik

cevap

32

başkası bu soruyu bulursa: Başka

Merakla birisi burada Jelly Bean çalıştıran bir Nexus 7'de, beklenmedik parametrelerle yöntem çağrılır yazıyor ama kez ve Jelly Bean öykünücüsü üzerinde, sanal klavyede Enter tuşuna basıldığında gerçekten de dinleyicinin geri çağırma yöntemi onEditorAction() çağrılır. Yukarıda belirtildiği gibi, olası bir çözüm veya geçici çözüm, Enter tuşunu mevcut işlem tuşlarından biriyle değiştirmektir. Bunlar halaEditorAction() 'da tetikleniyor. Ayrıca giriş tipini belirtmem gerekiyordu.

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

ve telefonun hiçbir şekilde imeActions desteklemiyorsa? (Olmayan birçok cihaz var.) – Darpan