Ich habe 2 EditText-Werte für meine Aktivität und setze die Variable maxLength
auf 5.
Jetzt möchte ich den Fokus auf editText2
setzen, wenn die Länge von 5 in editView1
... erreicht wird.
Ich habe es versucht mit:
editView1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(editView1.getText().length() == 5)
editView2.requestFocus();
return false;
}
});
Aber es wird nicht funktionieren ..
Das funktioniert
final EditText editText1 = (EditText) findViewById(R.id.editText1);
final EditText editText2 = (EditText) findViewById(R.id.editText2);
editText1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(editText1.getText().length() == 5)
editText2.requestFocus();
return false;
}
});
Der Beitrag von Marc Juschkeit war fast perfekt für mich.
In meinem Fall musste ich jedoch testen, ob es sich bei dem Keyevent um eine Aktion handelt, da ich im Edittext einen Standardtext habe, der dieselbe Länge hat.
final EditText editText1 = (EditText) findViewById(R.id.editText1);
final EditText editText2 = (EditText) findViewById(R.id.editText2);
editText1.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_UP) {
if (editText1.getText().length() == 5) {
editText2.requestFocus();
}
}
return false;
}
});
Fordern Sie an, dass der Fokus nicht auf dem Haupt-Thread funktioniert, denke ich. Aber ich bin mir nicht sicher. Das ist für mich gearbeitet,
_edittext.post(new Runnable() {
public void run()
{
_edittext.requestFocus();
}
});
EdName.setOnKeyListener (neuer OnKeyListener () {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
System.out.println("Yes Bud");
if(EdName.length()== 5)
{
EdBin.requestFocus();
}
return false;
}
});