Ich benutze diesen Code:
public boolean onKey(View v, int keyCode, KeyEvent event) {
msg = (EditText)findViewById(R.id.msg);
String message = msg.getText().toString();
if(keyCode == 66)
{
//It's hitting here twice.
}
return false;
};
Kann mir bitte jemand sagen, warum es zweimal trifft, wenn ich die Eingabetaste drücke?
Antworten:
OnKey wird zweimal ausgelöst: das erste Mal für den Schlüssel nach unten und das zweite Mal für den Schlüssel nach oben. Sie müssen also filtern:
quelle
return false
für Schlüssel nicht verarbeitet werden. Ich habe diesen CodeEditText
event.getAction()!=KeyEvent.ACTION_DOWN
, aber ich kommefalse
in diesem Fall zurück. Wenntrue
, werden alle anderen Schlüssel verbraucht. Sie werden Ihre Aktivität / Ihr Fragment nicht einmal mit der Schaltfläche Zurück beenden!quelle
Dieser Codeblock verhindert das zweimalige Aufrufen des Codes. Ich verwende den Wert loadCount String, wenn loadCount == 0 meinen Codeblock ausführt und ich loadCount ++ in meinem if-Block mache. Mein Codeblock funktioniert also pünktlich.
quelle