アクティビティにEditTextが2つあり、maxLength
を5に設定します。
editText2
で長さが5に達した場合は、フォーカスをeditView1
に設定します...
私はそれを試しました:
editView1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(editView1.getText().length() == 5)
editView2.requestFocus();
return false;
}
});
しかし、うまくいきません。
これは機能します
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;
}
});
Marc Juschkeitsの投稿は私にとってほぼ完璧でした。
しかし、私の場合、edittextに同じ長さの標準テキストがあるため、キーイベントがアクションアップかどうかをテストする必要がありました。
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;
}
});
リクエストフォーカスがメインスレッドで機能しないと思います。確信はないけど。これは私のために働いています、
_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;
}
});