Sur un seul téléphone que je suis en train de tester (HTC Incredible, Android 2.2, Logiciel 3.21.605.1), je rencontre le comportement suivant.OnEditorActionListener appelé deux fois avec le même événementTime sur le clavier SenseUI
Le gestionnaire d'événement onEditorAction est appelé deux fois (immédiatement) lorsque la touche Entrée du clavier de l'interface utilisateur est enfoncée.
Le KeyEvent.getEventTime() est la même pour les deux fois l'événement est appelé, me conduit à ce travail autour de:
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;
}
}
});
[...]
}
Le EditText est défini comme:
<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"
/>
sur tous les autres appareils sur lesquels j'ai testé, le bouton d'action est correctement étiqueté "Suivant" et l'événement n'est appelé qu'une seule fois lorsque ce bouton est enfoncé.
Est-ce un bug dans le clavier de Sense UI, ou est-ce que je fais quelque chose de mal?
Nous vous remercions de votre aide.
Mise à jour - grâce aux réponses données, j'ai établi les éléments suivants comme mes chèques. Cela fonctionne très bien sur les deux téléphones dont je dispose à tester (Sense UI et CyanogenMod CM7)
if (event != null && event.getAction() != KeyEvent.ACTION_DOWN) {
return false;
}
if (actionId != EditorInfo.IME_ACTION_NEXT && actionId != EditorInfo.IME_NULL) {
return false;
}
Pas de réponse pour vous J'ai peur, je voulais juste dire que j'ai été frappé par ce problème aujourd'hui. Je n'avais jamais vu le clavier HTC Sense avant aujourd'hui.Et comment ont-ils réussi à ignorer le drapeau textNoSuggestions? Rend mon interface un peu moche, les pourrir. –
J'ai remarqué que beaucoup d'applications ne fonctionnent pas correctement puisque leur clavier n'implémente pas le bouton par défaut (c'est toujours "Enter"). Cela inclut les applications fournies par Google (y compris, je pense, le processus d'enregistrement initial). Il semble que ce soit une très grande chose pour HTC. C'est dommage, car j'aime beaucoup SenseUI sur Motoblur. Merci pour la confirmation. – mbafford