0
所以我有三個EditText-盒子,當用戶按下其中一個Enter時,我想要移動到下一個。getText()在EditTexts上的奇怪行爲
我想:
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;
}
});
例如,設定三種不同的OnKeyListeners所有相同的EditText(電子郵件)。
我在這裏錯過了什麼?這是我的佈局:
<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" />
那麼您當前的實施會發生什麼? – Warpzit
這是不是一個替代解決方案http://stackoverflow.com/questions/5048586/can-you-set-tab-order-in-xml-layout –