angerufen Auf nur einem Telefon, auf dem ich teste (HTC Incredible, Android 2.2, Software 3.21.605.1), tritt das folgende Verhalten auf.OnEditorActionListener zweimal mit self eventTime auf der SenseUI-Tastatur
Der Ereignisbehandler onEditorAction wird zweimal (sofort) aufgerufen, wenn die Eingabetaste auf der Sense UI-Tastatur gedrückt wird.
Die KeyEvent.getEventTime() ist für beide gleich mal das Ereignis aufgerufen wird, führt mich zu dieser Behelfslösung:
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 ist definiert als:
<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"
/>
On Bei allen anderen Geräten, die ich getestet habe, ist die Aktionstaste ordnungsgemäß mit "Next" gekennzeichnet und das Ereignis wird nur einmal aufgerufen, wenn diese Taste gedrückt wird.
Ist das ein Fehler in der Tastatur von Sense UI, oder mache ich etwas falsch?
Vielen Dank für Ihre Hilfe.
Aktualisiert - dank der Antworten, die ich gegeben habe, habe ich mich auf die folgenden als meine Schecks festgelegt. Dies funktioniert gut auf beide der Telefone I-Test zur Verfügung haben (Sense UI und CyanogenMod CM7)
if (event != null && event.getAction() != KeyEvent.ACTION_DOWN) {
return false;
}
if (actionId != EditorInfo.IME_ACTION_NEXT && actionId != EditorInfo.IME_NULL) {
return false;
}
Keine Antwort für Sie Ich habe Angst, ich wollte nur sagen, dass ich heute von diesem Problem getroffen wurde. Ich habe die HTC Sense-Tastatur noch nie zuvor gesehen ... ugh!Und wie sind sie damit davongekommen, die textNoSuggestions-Flagge zu ignorieren? Macht meine Benutzeroberfläche ein bisschen sucky, verrotten sie. –
Ich habe festgestellt, dass viele Apps nicht richtig funktionieren, da ihre Tastatur die Standardschaltfläche nicht implementiert (es ist immer "Enter"). Dies schließt von Google bereitgestellte Anwendungen ein (einschließlich der ersten Registrierung). Es scheint eine ziemlich große Sache für HTC zu übersehen. Es ist eine Schande, weil ich eigentlich SenseUI mehr als Motoblur mag. Danke für die Bestätigung. – mbafford