したがって、3 つの EditText- ボックスがあり、ユーザーがそのうちの 1 つで Enter キーを押すと、次のボックスに移動したいと考えています。
私は試した:
final EditText email = (EditText) findViewById(R.id.editText1);
email.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
findViewById(R.id.editText2).requestFocus();
return true;
}
return false;
}
});
final EditText pass = (EditText) findViewById(R.id.editText2);
pass.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
findViewById(R.id.editText3).requestFocus();
return true;
}
return false;
}
});
final EditText passrep = (EditText) findViewById(R.id.editText3);
passrep.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
findViewById(R.id.button1).requestFocus();
return true;
}
return false;
}
});
しかし、このコードでは、キーボード入力時にフォーカスが editText1 から editText3 にジャンプします。
何が機能するかはこれです(偶然見つけました):
final EditText email = (EditText) findViewById(R.id.editText1);
email.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
findViewById(R.id.editText2).requestFocus();
return true;
}
return false;
}
});
final EditText pass = (EditText) findViewById(R.id.editText2);
email.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
findViewById(R.id.editText3).requestFocus();
return true;
}
return false;
}
});
final EditText passrep = (EditText) findViewById(R.id.editText3);
email.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
findViewById(R.id.button1).requestFocus();
return true;
}
return false;
}
});
たとえば、同じ EditText (電子メール) に対して 3 つの異なる OnKeyListeners をすべて設定します。
ここで何が欠けていますか?これは私のレイアウトです:
<EditText
android:id="@+id/editText1"
android:layout_width="234dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:ems="10"
android:inputType="textEmailAddress"
android:layout_marginTop="20dp"
android:hint="Email" >
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="234dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:ems="10"
android:inputType="textPassword"
android:layout_marginTop="20dp"
android:hint="Password" />
<EditText
android:id="@+id/editText3"
android:layout_width="234dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:ems="10"
android:inputType="textPassword"
android:layout_marginTop="20dp"
android:hint="Confirm Password" />
<Button
android:id="@+id/button1"
android:layout_width="123dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="35dp"
android:text="@string/submit" />