我遇到了requestFocus和两个EditTexts的问题。
在我的活动中,我有一个带有这些EditTexts的LinearLayout。 这是:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="10"
android:orientation="horizontal"
>
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="5"
android:gravity="center"
android:textAlignment="center"
android:inputType="numberDecimal"
android:digits="0123456789."
android:textAppearance="?android:attr/textAppearanceSmall"/>
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="5"
android:gravity="center"
android:textAlignment="center"
android:inputType="number"
android:digits="0123456789"
android:textAppearance="?android:attr/textAppearanceSmall">
<requestFocus />
</EditText>
在我的活动中:
EditText editText1 = (EditText) findViewById(R.id.editText1);
EditText editText2 = (EditText) findViewById(R.id.editText2);
当用户点击按钮程序时,必须检查editText2是否为空,如果为空,则必须对焦并且必须显示键盘。所以,在我的按钮的onClick方法中我有:
if(editText2.getText().toString().equals("") || editText2.getText().toString() == null){
editText2.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText2, InputMethodManager.SHOW_IMPLICIT);
}
但是有一个问题。当它为空时,程序将重点放在editText1上(即使editText1不为空,它也会删除所有内容)。
P.S。在editText1中,如果按下键是Enter,则必须聚焦editText2。我有:
editText1.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
editText2.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText2, InputMethodManager.SHOW_IMPLICIT);
return true;
}
return false;
}
});
这部分工作正常。