Frage

Ich arbeite an einer Android -Anwendung und habe eine Ansicht mit 3 EditTexts. Ich versuche zu erreichen, dass auf einer numerischen Taste, die in der letzten gedrückt wird, das Okkey -Ereignis für diese Aktivität aufrufen sollte. Das Problem ist, dass für den EditText, auf dem ich den OnkeyListener festgelegt habe, weder GetText noch SetText -Methoden funktionieren. Erlaube mir zu erklären:

Angenommen, ich initialisiere eine leere Zeichenfolge

String string1 = "";

In meiner OnCreate -Methode habe ich den OneKeyListener auf einen der EditTexts festgelegt

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    findViewById(R.id.EditText3).setOnKeyListener(this);
    ...
}

Wenn ich nun den folgenden Code in die überragende Okkey -Methode schreibe

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {
        string1 += ((EditText) findViewById(R.id.EditText1)).getText();
        string1 += ((EditText) findViewById(R.id.EditText2)).getText();
        string1 += ((EditText) findViewById(R.id.EditText3)).getText();

        ((EditText) findViewById(R.id.EditText1)).setText("");
        ((EditText) findViewById(R.id.EditText2)).setText("");
        ((EditText) findViewById(R.id.EditText3)).setText("");
    }
return false;
}

Nur editText1 und editText2 werden gelöscht und der Text in EditText3 wird nicht zu String1 verkettet. Wenn ich den Zustand der IF -Anweisung durch ersetze

if (keyCode == KeyEvent.KEYCODE_ENTER)

Wenn Sie dann beim Drücken der Eingabetaste (als nächstes festgelegt) funktioniert, funktioniert es wie erwartet. Ich habe versucht, den SetText ("") in die OnResume -Methode der Aktivität hinzuzufügen, aber ohne Unterschied im Ergebnis. Ich schätze die Zeit, die Sie genommen haben, um meine Frage zu lesen!

Bearbeitet: Hinzugefügt die "Rückgabe falsch"; Am Ende der Onkey -Methode hatte ich es in meiner Arbeit, es wurde aber vermisst, sie in diese Frage zu setzen, und wurde an Chris 'Antwort erinnert.

War es hilfreich?

Lösung

Zusätzlich zu Chris 'Antwort sollte ein Scheck hinzugefügt werden, um sicherzustellen, dass Ereignis.Getactaction () gleich wichtig ist. Action_Up; Onkey wird zweimal angerufen, und wenn GetAction () Action_down ist (zum ersten Mal die Methode aufgerufen wird), wurde das Zeichen noch nicht zur von getText () zurückgegebenen Charsequence hinzugefügt.

Andere Tipps

Wenn Sie den OnkeyListener Ihres EditText3 festlegen, ist das Ersetzen, was passiert, wenn Sie damit auf einen Schlüssel drücken. Versuchen return false; Am Ende des Onkey. Dies sollte den Wert an den richtigen Standort übertragen.

http://developer.android.com/reference/android/view/view.onkeylistener.html

Kehrt zurück

Richtig, wenn der Hörer das Ereignis konsumiert hat, sonst falsch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top