Sadece bir telefonda test ediyorum (HTC Incredible, Android 2.2, Software 3.21.605.1), aşağıdaki davranışları yaşıyorum.OnEditorActionListener SenseUI klavye üzerinde aynı eventTime ile iki kez çağrıldı
Sense UI klavyesi üzerindeki Enter tuşuna basıldığında onEditorAction olay işleyicisine iki kez (hemen) çağrılıyor.
KeyEvent.getEventTime() bu iş-geçici beni lider, olay denir hem kez aynıdır:
protected void onCreate(Bundle savedInstanceState) {
[...]
EditText text = (EditText)findViewById(R.id.txtBox);
text.setOnEditorActionListener(new OnEditorActionListener() {
private long lastCalled = -1;
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (event.getEventTime() == lastCalled) {
return false;
} else {
lastCalled = event.getEventTime();
handleNextButton(v);
return true;
}
}
});
[...]
}
EditText olarak tanımlanır:
<EditText
android:layout_width="150sp"
android:layout_height="wrap_content"
android:id="@+id/txtBox"
android:imeOptions="actionNext"
android:capitalize="characters"
android:singleLine="true"
android:inputType="textVisiblePassword|textCapCharacters|textNoSuggestions"
android:autoText="false"
android:editable="true"
android:maxLength="6"
/>
Açık Test ettiğim tüm diğer cihazlar, eylem düğmesi "Next" (İleri) olarak etiketlenir ve bu düğmeye basıldığında yalnızca bir tek olay olarak adlandırılır.
Bu, Sense UI'nin klavyesinde bir hata mı, yoksa yanlış bir şey mi yapıyorum?
Yardımlarınız için teşekkür ederiz.
Güncelleme - verilen cevaplar sayesinde, çeklerime aşağıdaki gibi karar verdim. Bu teste Kullanılabilir durumda telefonların hem çalışıyor (Sense UI ve Cyanogenmod CM7)
if (event != null && event.getAction() != KeyEvent.ACTION_DOWN) {
return false;
}
if (actionId != EditorInfo.IME_ACTION_NEXT && actionId != EditorInfo.IME_NULL) {
return false;
}
Sizin için bir cevap yok Korkarım, bugün bu konuya çarptığımı söylemek istedim. HTC Sense klavyeyi daha önce hiç görmemiştim .. ugh!Ve metinNoSuggestions bayrağını görmezden gelerek nasıl kurtuldular? UI'imi biraz zayıflatır, çürür. –
Klavyenin varsayılan düğmeyi (her zaman "Enter") uygulamaması nedeniyle pek çok uygulamanın tam olarak düzgün çalışmadığını fark ettim. Buna Google tarafından sağlanan başvurular dahildir (bence ilk kayıt işlemi de dahil). HTC'nin gözden kaçırması için oldukça büyük bir şey gibi görünüyor. Bu bir utanç, çünkü Motoblur'dan daha fazla SenseUI'yi seviyorum. Onay için teşekkürler. – mbafford