Android requestFocus具有多个EditText

时间:2015-03-18 11:26:16

标签: java android android-layout android-edittext

我遇到了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;
        }
    });

这部分工作正常。

0 个答案:

没有答案