I have multiple Edittexts on action next I have added nextFocus values in the xml.
But one edit text is either visible or invisible based on the state of under age checkbox value. So I need to set focus on it afterr YYYY editext dynammically. But dynamically the requestFocus() is not working.
What I need to do on click of Next
This Email view is visible only when under 18 check box is unchecked.
What happends on next button click after YYYY edittext : control goes to username Edittext. I cant use FocusNext in xml as the app crashes whenever the email textview is GONE
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">
<CheckBox
android:id="@+id/under18_check_box"
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">
<CheckBox
android:id="@+id/terms_conditions_signup_checkbox"
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 have referred to various solutions but nothing is working
Set next EditText focused and editable on KEY_DOWN
U need two xml attributes also to achieve this:
Add them to the EditText as well as the parent layouts. By default these are false, so the focus is not given to the requested view.
Source: https://developer.android.com/reference/android/view/View.html#attr_android:focusable
After u show the EditText based on the checkbox selection, add the next and previous focus points dynamically in code.
Hope this helps.
What was happening is the I was returning false from onEditorAction- Hence the default editor action was also performed back to back and the focus instantly moved away from the email editText. Now I return true and the deafult action is not performed.Its working correctly now.