Ich habe eine EditText
Position , in der ich die folgende Eigenschaft einstelle, damit ich die Schaltfläche "Fertig" auf der Tastatur anzeigen kann, wenn der Benutzer auf den Text "Bearbeiten" klickt.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Wenn der Benutzer auf der Bildschirmtastatur auf die Schaltfläche "Fertig" klickt (Eingabe beendet), möchte ich einen RadioButton
Status ändern .
Wie kann ich die Schaltfläche "Fertig" verfolgen, wenn sie von der Bildschirmtastatur gedrückt wird?
android
android-edittext
ime
D-Mann
quelle
quelle
Antworten:
Am Ende hatte ich eine Kombination aus Roberts und Chirags Antworten:
Update: Der obige Code würde den Rückruf manchmal zweimal aktivieren. Stattdessen habe ich mich für den folgenden Code entschieden, den ich von den Google Chat-Clients erhalten habe:
quelle
isPreparedForSending()
und warum gibt die zweite Methode zurücktrue
?Versuchen Sie dies, es sollte für das funktionieren, was Sie brauchen:
quelle
<EditText android:imeOptions="actionDone" android:inputType="text"/>
Der Java-Code lautet:
quelle
Ich weiß, dass diese Frage alt ist, aber ich möchte darauf hinweisen, was für mich funktioniert hat.
Ich habe versucht, den Beispielcode von der Android Developers-Website (siehe unten) zu verwenden, aber es hat nicht funktioniert. Also habe ich die EditorInfo-Klasse überprüft und festgestellt, dass der ganzzahlige Wert IME_ACTION_SEND als angegeben wurde
0x00000004
.Beispielcode von Android-Entwicklern:
Also habe ich meiner
res/values/integers.xml
Datei den ganzzahligen Wert hinzugefügt .Dann habe ich meine Layoutdatei
res/layouts/activity_home.xml
wie folgt bearbeitetUnd dann funktionierte der Beispielcode.
quelle
Weitere Informationen zum Festlegen des OnKeyListener und zum Abhören der Schaltfläche Fertig.
Fügen Sie zuerst OnKeyListener zum Implementierungsabschnitt Ihrer Klasse hinzu. Fügen Sie dann die in der OnKeyListener-Oberfläche definierte Funktion hinzu:
Gegeben ein EditText-Objekt:
quelle
Während die meisten Leute die Frage direkt beantwortet haben, wollte ich mehr auf das Konzept dahinter eingehen. Zuerst wurde ich auf IME aufmerksam gemacht, als ich eine Standard-Anmeldeaktivität erstellte. Es wurde ein Code für mich generiert, der Folgendes enthielt:
Sie sollten bereits mit dem inputType-Attribut vertraut sein. Dies informiert Android lediglich über die Art des erwarteten Textes wie E-Mail-Adresse, Passwort oder Telefonnummer. Die vollständige Liste der möglichen Werte finden Sie hier .
Es war jedoch das Attribut,
imeOptions="actionUnspecified"
dass ich seinen Zweck nicht verstand. Mit Android können Sie mit der Tastatur interagieren, die am unteren Bildschirmrand angezeigt wird, wenn Text mit der Taste ausgewählt wirdInputMethodManager
. In der unteren Ecke der Tastatur befindet sich eine Schaltfläche mit der Aufschrift "Weiter" oder "Fertig", je nach aktuellem Textfeld. Mit Android können Sie dies mithilfe von anpassenandroid:imeOptions
. Sie können eine Schaltfläche "Senden" oder "Weiter" angeben. Die vollständige Liste finden Sie hier .Damit können Sie auf Drücken der Aktionstaste warten, indem Sie ein
TextView.OnEditorActionListener
für dasEditText
Element definieren. Wie in Ihrem Beispiel:Jetzt in meinem Beispiel hatte ich
android:imeOptions="actionUnspecified"
Attribut. Dies ist nützlich, wenn Sie versuchen möchten, einen Benutzer anzumelden, wenn dieser die Eingabetaste drückt. In Ihrer Aktivität können Sie dieses Tag erkennen und dann versuchen, sich anzumelden:quelle
Dank chikka.anddev und Alex Cohn in Kotlin ist es:
Hier habe ich für den Check -
Enter
Taste, denn es gibtEditorInfo.IME_NULL
stattIME_ACTION_DONE
.Siehe auch Android imeOptions = "actionDone" funktioniert nicht . Fügen Sie
android:singleLine="true"
in derEditText
.quelle
Kotlin-Lösung
Die grundlegende Vorgehensweise in Kotlin ist:
Kotlin-Erweiterung
Verwenden Sie diese Option, um einfach
edittext.onDone{/*action*/}
Ihren Hauptcode einzugeben. Macht Ihren Code weitaus lesbarer und wartbarerVergessen Sie nicht, diese Optionen Ihrem Edittext hinzuzufügen
quelle
setOnEditorActionListener
. Vielleicht ist es nur eine Frage der lokalen Konfigurationseinstellungen, aber meine Linter wirklich, wirklich will , dass ich einen hinzufügenelse
Zweig zu , um die „wahre“ als return - Anweisung des Hörers (im Gegensatz zu dem akzeptierenif
-Block).Wenn Sie Android Annotations verwenden, https://github.com/androidannotations/androidannotations
Sie können die Annotation @EditorAction verwenden
quelle