EditText´s android:nextFocusDown attibute stops working when onClick is set

15,781

Do it programmatically because when you call android:nextFocusDown in XML may be the object that you want to call in the nextFocus will not create it till.

private void setUpView(){
    editText1=(EditText)findViewById(R.id.editText1);
    editText2=(EditText)findViewById(R.id.editText2);
    editText3=(EditText)findViewById(R.id.editText3);
}

private void setUpFocus(){
    editText1.setNextFocusDownId(R.id.editText2);
    editText2.setNextFocusDownId(R.id.editText8);// you can give focus to any id
    editText3.setNextFocusDownId(R.id.editText9);
}

Call setUpView() before setUpFocus() in onCreate().

Share:
15,781

Related videos on Youtube

regisxp
Author by

regisxp

Updated on June 04, 2022

Comments

  • regisxp
    regisxp almost 2 years

    Does anybody knows why the android:nextFocusDown attibute stops working when we set the onClick on it?

    On the example below, we have some EditText with this attribute defined:

    <TableRow
    android:weightSum="1"
    android:gravity="center">
    <EditText
        android:id="@+id/txtChave1"
        android:maxLength="4"
        android:gravity="center"
        android:textSize="16dp"
        android:layout_height="wrap_content"
        android:layout_weight=".23"
        android:layout_width="0dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:singleLine="true"
        android:selectAllOnFocus="true"
        android:inputType="textCapCharacters"
        android:nextFocusDown="@+id/txtChave2"></EditText>
    
    <EditText
        android:id="@+id/txtChave2"
        android:maxLength="4"
        android:gravity="center"
        android:textSize="16dp"
        android:layout_height="wrap_content"
        android:layout_weight=".23"
        android:layout_width="0dp"
        android:layout_marginRight="5dp"
        android:singleLine="true"
        android:selectAllOnFocus="true"
        android:inputType="textCapCharacters"
        android:nextFocusDown="@+id/txtChave3"></EditText>
    
    <EditText
        android:id="@+id/txtChave3"
        android:maxLength="4"
        android:gravity="center"
        android:textSize="16dp"
        android:layout_height="wrap_content"
        android:layout_weight=".23"
        android:layout_width="0dp"
        android:layout_marginRight="5dp"
        android:singleLine="true"
        android:selectAllOnFocus="true"
        android:inputType="textCapCharacters"
        android:nextFocusDown="@+id/txtChave4"></EditText>
    
    <EditText
        android:id="@+id/txtChave4"
        android:maxLength="4"
        android:gravity="center"
        android:textSize="16dp"
        android:layout_height="wrap_content"
        android:layout_weight=".23"
        android:layout_width="0dp"
        android:layout_marginRight="5dp"
        android:singleLine="true"
        android:selectAllOnFocus="true"
        android:inputType="textCapCharacters"></EditText>
    </TableRow>
    

    As defined above, when user clicks on the "next button" on virtual keyboard, the focus changes as expected... But, if we set the onClick attribute, the android:nextFocusDown doen´t work anymore.

    <EditText
    android:id="@+id/txtChave1"
    android:maxLength="4"
    android:gravity="center"
    android:textSize="16dp"
    android:layout_height="wrap_content"
    android:layout_weight=".23"
    android:layout_width="0dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:singleLine="true"
    android:selectAllOnFocus="true"
    android:inputType="textCapCharacters"
    android:nextFocusDown="@+id/txtChave2"
    android:onClick="onClickHandler">
    </EditText>
    

    Any advice?

    Thanks a lot!

  • Chinese Cat
    Chinese Cat over 4 years
    Good Job. It solved my problem. I coded it in xml but it didn't work. But It worked by coding in .java/.kt file.