Android EditText requestfocus() dynamic does not work properly
Next, I have multiple effects on edittexts, and I add the value nextfocus to the XML
However, according to the status of the minor check box value, whether an edited text is visible or invisible. Therefore, I need to focus on it after yyyy editext is dynamic. However, the dynamic requestfocus() does not work properly
Click what needs to be done next
This email view is visible only if the under 18 check box is not selected
dobYearEt.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.i("focus","on yyyy");
if (actionId == EditorInfo.IME_ACTION_DONE ||
actionId == EditorInfo.IME_ACTION_NEXT) {
Log.i("focus",isUnderAge+"");
if(isUnderAge){
username_reg_ev_dob_row.setFocusableInTouchMode(true);
username_reg_ev_dob_row.requestFocus();
}else{
// NOTHING HAPPENS
// email_ev.setFocusableInTouchMode(true);
// dobYearEt.clearFocus();
email_ev.requestFocus();
// InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// mgr.showSoftInput(email_ev, InputMethodManager.SHOW_IMPLICIT);
}
return false;
}
Xml
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/register"
android:layout_marginLeft="@dimen/sign_up_left_right_margin"
android:layout_marginRight="@dimen/sign_up_left_right_margin"
android:layout_marginTop="@dimen/sign_up_user_name_top_margin">
<!--<RelativeLayout-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content">-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/name_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3">
<EditText
android:id="@+id/firstname_ev"
style="@style/RegisterViewStyle"
android:hint=" FIRST NAME:"
android:textCursorDrawable="@null"
android:nextFocusForward="@+id/middle_ev"
android:nextFocusRight="@+id/middle_ev"
android:nextFocusDown="@+id/middle_ev"
android:nextFocusLeft="@+id/middle_ev"
android:nextFocusUp="@+id/middle_ev"/>
<View
android:layout_width="@dimen/sign_up_names_sep_width"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/middle_ev"
style="@style/RegisterViewStyle"
android:hint=" MIDDLE INITIAL:"
android:textCursorDrawable="@null"
android:nextFocusForward="@+id/lastname_ev"
android:nextFocusRight="@+id/lastname_ev"
android:nextFocusDown="@+id/lastname_ev"
android:nextFocusLeft="@+id/lastname_ev"
android:nextFocusUp="@+id/lastname_ev"/>
<View
android:layout_width="@dimen/sign_up_names_sep_width"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/lastname_ev"
style="@style/RegisterViewStyle"
android:hint=" LAST NAME:"
android:textCursorDrawable="@null"
android:nextFocusForward="@+id/dob_mm_et"
android:nextFocusRight="@+id/dob_mm_et"
android:nextFocusDown="@+id/dob_mm_et"
android:nextFocusLeft="@+id/dob_mm_et"
android:nextFocusUp="@+id/dob_mm_et"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Check@R_532_2419@
android:id="@+id/under18_check_@R_532_2419@"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/raffle_blue_color"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/under18_tv"
android:text="I'm under 18 and/or don't have an email?"/>
</LinearLayout>
<LinearLayout
android:id="@+id/dob_parent_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<!--android:weightSum="2"-->
<LinearLayout
style="@style/RegisterViewStyle2"
android:id="@+id/dob_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:layout_marginTop="@dimen/sign_up_field_sep_margin"
android:layout_weight="1"
android:orientation="horizontal">
<!--style="@style/RegisterViewStyle2"-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DOB:"
android:textColor="@color/edit_text_hint_color"
android:id="@+id/dob_label_tv"
/>
<!--<EditText-->
<!--android:id="@+id/dob_dd_et"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:background="@android:color/transparent"-->
<!--android:hint="_ _"-->
<!--android:textCursorDrawable="@null"-->
<!--android:inputType="number"-->
<!--android:maxLength="2"-->
<!--android:nextFocusForward="@+id/dob_mm_et"-->
<!--android:nextFocusRight="@+id/dob_mm_et"-->
<!--android:nextFocusDown="@+id/dob_mm_et"-->
<!--android:nextFocusLeft="@+id/dob_mm_et"-->
<!--android:nextFocusUp="@+id/dob_mm_et"/>-->
<EditText
android:id="@+id/dob_mm_et"
style="@style/RegisterViewStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:hint="MM"
android:textCursorDrawable="@null"
android:inputType="number"
android:maxLength="2"
android:nextFocusForward="@+id/dob_dd_et"
android:nextFocusRight="@+id/dob_dd_et"
android:nextFocusDown="@+id/dob_dd_et"
android:nextFocusLeft="@+id/dob_dd_et"
android:nextFocusUp="@+id/dob_dd_et"/>
<TextView
android:textColor="@color/edit_text_hint_color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" / "/>
<!--<EditText-->
<!--android:id="@+id/dob_mm_et"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:background="@android:color/transparent"-->
<!--android:hint="_ _"-->
<!--android:inputType="number"-->
<!--android:textCursorDrawable="@null"-->
<!--android:maxLength="2"-->
<!--android:nextFocusForward="@+id/dob_yyyy_et"-->
<!--android:nextFocusRight="@+id/dob_yyyy_et"-->
<!--android:nextFocusDown="@+id/dob_yyyy_et"-->
<!--android:nextFocusLeft="@+id/dob_yyyy_et"-->
<!--android:nextFocusUp="@+id/dob_yyyy_et"/>-->
<EditText
android:id="@+id/dob_dd_et"
style="@style/RegisterViewStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:hint="DD"
android:inputType="number"
android:textCursorDrawable="@null"
android:maxLength="2"
android:nextFocusForward="@+id/dob_yyyy_et"
android:nextFocusRight="@+id/dob_yyyy_et"
android:nextFocusDown="@+id/dob_yyyy_et"
android:nextFocusLeft="@+id/dob_yyyy_et"
android:nextFocusUp="@+id/dob_yyyy_et"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" / "
android:textColor="@color/edit_text_hint_color"/>
<EditText
style="@style/RegisterViewStyle"
android:id="@+id/dob_yyyy_et"
android:layout_width="wrap_content"
android:textCursorDrawable="@null"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:hint="YYYY"
android:inputType="number"
android:maxLength="4"
/>
<!--android:nextFocusForward="@+id/email_ev"-->
<!--android:nextFocusRight="@+id/email_ev"-->
<!--android:nextFocusDown="@+id/email_ev"-->
<!--android:nextFocusLeft="@+id/email_ev"-->
<!--android:nextFocusUp="@+id/email_ev"-->
</LinearLayout>
<EditText
android:id="@+id/email_ev"
style="@style/RegisterViewStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/sign_up_field_sep_margin"
android:layout_weight="1"
android:hint=" EMAIL:"
android:textCursorDrawable="@null"
/>
<!--android:nextFocusForward="@+id/password_reg_ev"-->
<!--android:nextFocusRight="@+id/password_reg_ev"-->
<!--android:nextFocusDown="@+id/password_reg_ev"-->
<!--android:nextFocusLeft="@+id/password_reg_ev"-->
<!--android:nextFocusUp="@+id/password_reg_ev"-->
<!--style="@style/RegisterViewStyle2"-->
<EditText
android:id="@+id/username_reg_ev_dob_row"
style="@style/RegisterViewStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/sign_up_field_sep_margin"
android:layout_weight="1"
android:hint=" USERNAME:"
android:textCursorDrawable="@null"
android:visibility="gone"
android:nextFocusForward="@+id/password_reg_ev"
android:nextFocusRight="@+id/password_reg_ev"
android:nextFocusDown="@+id/password_reg_ev"
android:nextFocusLeft="@+id/password_reg_ev"
android:nextFocusUp="@+id/password_reg_ev"/>
</LinearLayout>
<EditText
android:id="@+id/username_reg_ev"
style="@style/RegisterViewStyle2"
android:layout_below="@+id/email_ev"
android:layout_marginTop="@dimen/sign_up_field_sep_margin"
android:hint=" USERNAME:"
android:textCursorDrawable="@null"
android:nextFocusForward="@+id/password_reg_ev"
android:nextFocusRight="@+id/password_reg_ev"
android:nextFocusDown="@+id/password_reg_ev"
android:nextFocusLeft="@+id/password_reg_ev"
android:nextFocusUp="@+id/password_reg_ev"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/password_reg_ev"
style="@style/RegisterViewStyle2"
android:layout_below="@+id/username_reg_ev"
android:layout_marginTop="@dimen/sign_up_field_sep_margin"
android:hint=" PASSWORD:"
android:layout_marginRight="2dp"
android:textCursorDrawable="@null"
android:inputType="textPassword"
android:nextFocusForward="@+id/confirm_password_reg_ev"
android:nextFocusRight="@+id/confirm_password_reg_ev"
android:nextFocusDown="@+id/confirm_password_reg_ev"
android:nextFocusLeft="@+id/confirm_password_reg_ev"
android:nextFocusUp="@+id/confirm_password_reg_ev"/>
<EditText
android:id="@+id/confirm_password_reg_ev"
style="@style/RegisterViewStyle2"
android:layout_below="@+id/password_reg_ev"
android:layout_marginTop="@dimen/sign_up_field_sep_margin"
android:hint=" CONFIRM PASSWORD:"
android:textCursorDrawable="@null"
android:inputType="textPassword"
android:nextFocusForward="@+id/group_code_reg_ev"
android:nextFocusRight="@+id/group_code_reg_ev"
android:nextFocusDown="@+id/group_code_reg_ev"
android:nextFocusLeft="@+id/group_code_reg_ev"
android:nextFocusUp="@+id/group_code_reg_ev"/>
</LinearLayout>
<EditText
android:id="@+id/group_code_reg_ev"
style="@style/RegisterViewStyle2"
android:layout_below="@+id/confirm_password_reg_ev"
android:layout_marginTop="@dimen/sign_up_field_sep_margin"
android:textCursorDrawable="@null"
android:hint=" GROUP CODE(OPTIONAL):"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Check@R_532_2419@
android:id="@+id/terms_conditions_signup_check@R_532_2419@"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/raffle_blue_color"
/>
<TextView
android:id="@+id/terms_conditions_register_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/terms_conditions"/>
</LinearLayout>
<RelativeLayout
android:id="@+id/register_btn_rl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/registration_message"
android:layout_marginBottom="6dp"
android:layout_marginTop="@dimen/sign_up_btn_top_margin"
android:background="@color/raffle_blue_color">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:id="@+id/register_tv"
android:padding="6dp"
android:text="REGISTER"
android:textColor="@android:color/white"
android:textSize="@dimen/sign_up_edit_text_size"/>
</RelativeLayout>
</LinearLayout>
</ScrollView>
I mentioned various solutions, but they didn't work
Set next EditText focused and editable on KEY_ DOWN
requestFocus not working
EditText request focus not working
requestFocus not working
resolvent:
What happened was that I returned false from oneditoraction, so the default editor action was also executed back and forth, and the focus was immediately removed from the e-mail EditText. Now I returned true and did not execute the default action, and now it can work normally
dobYearEt.setOnEditorActionListener(new EditText.OnEditor ActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.i("focus","on yyyy");
if (actionId == EditorInfo.IME_ACTION_DONE ||
actionId == EditorInfo.IME_ACTION_NEXT) {
Log.i("focus",isUnderAge+"");
if(isUnderAge){
username_reg_ev_dob_row.setFocusableInTouchMode(true);
username_reg_ev_dob_row.requestFocus();
}else{
email_ev.requestFocus();
}
return true ; // Now WORKS
// return false;
}