J'ai 2 EditText sur mon activité et définir la maxLength
à 5.
Maintenant, je veux définir le focus sur editText2
, si la longueur de 5 est atteinte dans editView1
...
Je l'ai essayé avec:
editView1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(editView1.getText().length() == 5)
editView2.requestFocus();
return false;
}
});
Mais ça ne marchera pas ..
Cela marche
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;
}
});
Le message de Marc Juschkeits était presque parfait pour moi.
Mais dans mon cas, je devais tester si le keyevent est une action up parce que j'ai un texte standard dans l'edittext qui a la même longueur.
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;
}
});
Demande focus ne fonctionne pas sur le fil principal, je pense. Mais je ne suis pas sûr . Cela a fonctionné pour moi,
_edittext.post(new Runnable() {
public void run()
{
_edittext.requestFocus();
}
});
EdName.setOnKeyListener (new OnKeyListener () {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
System.out.println("Yes Bud");
if(EdName.length()== 5)
{
EdBin.requestFocus();
}
return false;
}
});