2016-05-18 19 views
2

私はアクション時に複数のEdittextを持っています。次にxmlにnextFocus値を追加しました。Edittext requestFocus()は動的に動作しません

ただし、1つの編集テキストは、年齢チェックボックスの値の状態に基づいて表示されるか、表示されません。だから私はそれをYYYY editextの後に焦点を当てる必要があります。 しかし、requestFocus()は動的に動作していません。私は18歳未満のチェックボックスがオフになっている場合にのみ、この電子メールのビューが表示されている次の

enter image description here

のクリック時に実行する必要があり何

。 YYYYののEditTextた後、次のボタンのクリックでhappends何

:コントロールがEDITTEXTをユーザ名に を行きます。私は、様々な解決策に言及しているが、何も

を作業していないされている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> 

アプリがクラッシュしたとして、XMLで 電子メールのTextViewがなくなっているときは常に

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; 
      } 

をFocusNextを使用するカントSet next EditText focused and editable on KEY_DOWN

requestFocus not working

EditText request focus not working

requestFocus not working

+0

少し後で、私はハンドラが500ミリ秒後に言うことを意味します。 –

+0

@JagjitSinghハンドラでは動作しません –

答えて

0

私はonEditorActionからfalseを返していました。そのため、デフォルトのエディタアクションもまた、バックツーバックで実行され、フォーカスは即座にemail editTextから離れました。今私は真実に戻り、聾者の行動は行われません。今は正しく働いています。

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; 
      } 
0

Uは、2つのXMLがこれを達成するためにも属性が必要:

android:focusable="true" 
android:focusableInTouchMode="true" 

のEditTextだけでなく、親のレイアウトに追加します。デフォルトではこれらはfalseであるため、要求されたビューにフォーカスは与えられません。

出典:uは、チェックボックスの選択に基づいてのEditTextを示した後、コードで動的に次および前のフォーカスポイントを追加https://developer.android.com/reference/android/view/View.html#attr_android:focusable

これが役に立ちます。

関連する問題