-1
  • 合計5つの編集テキストがあります。
  • のsetOnFocusChangeListener、つまりtxt_locationという1つのメソッドを呼び出しています。
  • ボタンをクリックして保存します。ボタンを押します。私はすべてのEditTextを検証しています。
  • 私がクリックしたとき保存して続けるボタンtxt_location - EditTextは、私が望ましくないフォーカスを自動的に得る。私が試してみました何

ボタンクリックでEditTextからフォーカスをクリア - Android

  • txt_location.clearFocus()
  • other_edittext.requestFocus()以下のような

マイコード。方法以下

AddAddressFragment.java

onActivityCreated方法です。

txt_location.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean hasFocus) { 
      if (hasFocus) { 

       txt_location.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         findPlace(); 
        } 
       }); 
       findPlace(); 
      } 
     } 
    }); 

layoutFooter.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(isvalidateFields()){ 
       // Code after validating all EditTexts 
      } 
     } 
    }); 

下記の方法は、onActivityCreatedメソッドの外にあります。

private boolean isvalidateFields() { 
    boolean result = true; 
    if (!ValidationUtils.hasText(txtCity, cityTxt, "City Required")) { 
     result = false; 
    } 
    if (!ValidationUtils.hasText(txt_location, location_txt, "Location Required")) { 
     result = false; 
    } 
    if (!ValidationUtils.hasText(txtPincode, pincodeTxt, "Pincode Required")) 
     result = false; 
    if (!ValidationUtils.hasText(txtDoorName, doorNumberTxt, "Address line 1 Required")) { 
     result = false; 
    } 
    if (!ValidationUtils.hasText(txtApartmentName, apartmentTxt, "Address line 2 Required")) { 
     result = false; 
    } 
    return result; 
} 

address_fragment.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:fillViewport="true"> 

     <RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_marginTop="15px"> 

      <LinearLayout 
       android:id="@+id/spinner" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

       <RelativeLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal"> 

        <TextView 
         android:id="@+id/titleText" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_alignParentLeft="true" 
         android:layout_margin="@dimen/large_margin" 
         android:layout_marginBottom="@dimen/normal_margin" 
         android:text="Address" 
         android:textSize="@dimen/text_content" /> 

        <CheckBox 
         android:id="@+id/checkBox" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_alignParentRight="true" 
         android:layout_margin="@dimen/small_margin" 
         android:button="@drawable/check_box" 
         android:checked="true" 
         android:clickable="false" /> 
       </RelativeLayout> 

       <View 
        android:layout_width="match_parent" 
        android:layout_height="1dp" 
        android:layout_margin="@dimen/small_margin" 
        android:background="@color/gray_border" /> 

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_margin="@dimen/large_margin" 
        android:orientation="vertical" 
        android:padding="@dimen/large_margin"> 

        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:orientation="vertical"> 

         <android.support.design.widget.TextInputLayout 
          android:id="@+id/doorNumberTxt" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="20dp" 
          android:theme="@style/TextLabel"> 

          <EditText 
           android:id="@+id/txtDoorName" 
           android:layout_width="match_parent" 
           android:layout_height="30dp" 
           android:layout_marginBottom="@dimen/normal_margin" 
           android:layout_marginTop="@dimen/normal_margin" 
           android:background="@android:color/transparent" 
           android:hint="@string/door_number" 
           android:singleLine="true" 
           android:textColorHighlight="@color/gray_text" 
           android:textColorHint="@color/gray_text" 
           android:textSize="@dimen/text_medium" /> 
         </android.support.design.widget.TextInputLayout> 

         <View 
          android:layout_width="match_parent" 
          android:layout_height="1dp" 
          android:layout_marginBottom="@dimen/normal_margin" 
          android:layout_marginTop="@dimen/normal_margin" 
          android:background="@color/gray_border" /> 

         <android.support.design.widget.TextInputLayout 
          android:id="@+id/apartmentTxt" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="20dp" 
          android:theme="@style/TextLabel"> 

          <EditText 
           android:id="@+id/txtApartmentName" 
           android:layout_width="match_parent" 
           android:layout_height="30dp" 
           android:layout_marginBottom="@dimen/normal_margin" 
           android:layout_marginTop="@dimen/normal_margin" 
           android:background="@android:color/transparent" 
           android:hint="@string/apartment_number" 
           android:singleLine="true" 
           android:textColorHighlight="@color/gray_text" 
           android:textColorHint="@color/gray_text" 
           android:textSize="@dimen/text_medium" /> 
         </android.support.design.widget.TextInputLayout> 

         <View 
          android:layout_width="match_parent" 
          android:layout_height="1dp" 
          android:layout_marginBottom="@dimen/normal_margin" 
          android:layout_marginTop="@dimen/normal_margin" 
          android:background="@color/gray_border" /> 

         <android.support.design.widget.TextInputLayout 
          android:id="@+id/location_txt" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="20dp" 
          android:theme="@style/TextLabel"> 

          <EditText 
           android:id="@+id/txt_location" 
           android:layout_width="match_parent" 
           android:layout_height="30dp" 
           android:layout_marginBottom="@dimen/normal_margin" 
           android:layout_marginTop="@dimen/normal_margin" 
           android:background="@android:color/transparent" 
           android:clickable="false" 
           android:hint="@string/txt_location" 
           android:lines="2" 
           android:textColorHighlight="@color/gray_text" 
           android:textColorHint="@color/gray_text" 
           android:textSize="@dimen/text_medium" /> 
         </android.support.design.widget.TextInputLayout> 

         <View 
          android:layout_width="match_parent" 
          android:layout_height="1dp" 
          android:layout_marginBottom="@dimen/normal_margin" 
          android:layout_marginTop="@dimen/normal_margin" 
          android:background="@color/gray_border" /> 

         <android.support.design.widget.TextInputLayout 
          android:id="@+id/cityTxt" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="20dp" 
          android:theme="@style/TextLabel"> 

          <EditText 
           android:id="@+id/txtCity" 
           android:layout_width="match_parent" 
           android:layout_height="30dp" 
           android:layout_marginBottom="@dimen/normal_margin" 
           android:layout_marginTop="@dimen/normal_margin" 
           android:background="@android:color/transparent" 
           android:clickable="false" 
           android:hint="@string/city" 
           android:lines="5" 
           android:textColorHighlight="@color/gray_text" 
           android:textColorHint="@color/gray_text" 
           android:textSize="@dimen/text_medium" /> 
         </android.support.design.widget.TextInputLayout> 

         <View 
          android:layout_width="match_parent" 
          android:layout_height="1dp" 
          android:layout_marginBottom="@dimen/normal_margin" 
          android:layout_marginTop="@dimen/normal_margin" 
          android:background="@color/gray_border" /> 

         <android.support.design.widget.TextInputLayout 
          android:id="@+id/pincodeTxt" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="20dp" 
          android:theme="@style/TextLabel"> 

          <EditText 
           android:id="@+id/txtPincode" 
           android:layout_width="match_parent" 
           android:layout_height="30dp" 
           android:layout_marginBottom="@dimen/normal_margin" 
           android:layout_marginTop="@dimen/normal_margin" 
           android:background="@android:color/transparent" 
           android:digits="1234567890" 
           android:hint="@string/pincode" 
           android:inputType="textPostalAddress" 
           android:singleLine="true" 
           android:textColorHighlight="@color/gray_text" 
           android:textColorHint="@color/gray_text" 
           android:textSize="@dimen/text_medium" /> 
         </android.support.design.widget.TextInputLayout> 

         <View 
          android:layout_width="match_parent" 
          android:layout_height="1dp" 
          android:layout_marginBottom="@dimen/normal_margin" 
          android:layout_marginTop="@dimen/normal_margin" 
          android:background="@color/gray_border" /> 
        </LinearLayout> 
       </LinearLayout> 
      </LinearLayout> 
     </RelativeLayout> 
    </ScrollView> 

    <RelativeLayout 
     android:id="@+id/layoutFooter" 
     android:layout_width="match_parent" 
     android:layout_height="?android:attr/actionBarSize" 
     android:layout_alignParentBottom="true" 
     android:background="@color/fab_button_color"> 

     <TextView 
      android:id="@+id/txtLblInr" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_centerVertical="true" 
      android:layout_gravity="center_vertical" 
      android:layout_marginLeft="@dimen/x_large_margin" 
      android:gravity="center_vertical" 
      android:singleLine="true" 
      android:text="@string/save_n_contine" 
      android:textAllCaps="true" 
      android:textColor="@color/white" 
      android:textSize="@dimen/text_title" /> 

     <TextView 
      android:id="@+id/txtTotalContinue" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="true" 
      android:layout_gravity="center_vertical" 
      android:layout_marginRight="@dimen/x_large_margin" 
      android:drawableRight="@drawable/right_arrow" 
      android:gravity="center" 
      android:singleLine="true" 
      android:textColor="@color/white" 
      android:textSize="@dimen/text_title" /> 
    </RelativeLayout> 
</LinearLayout> 

答えて

0

入れますZeroOneの答えがうまくいきませんでした。 setOnFocusChangeListenerを削除し、txt_location - EditTextの直前のEditTextにsetOnEditorActionListenerを挿入しました。そして私はsetOnTouchListenertxt_location - EditTextを入れます。

setOnEditorActionListener - キーボードのNEXT LINEボタンをクリックすると呼び出されます。

完全に変更されたコードは以下のとおりです。

EditTextJustBefore_txt_location_EditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_NEXT) { 
       findPlace(); 
      } 
      return true; 
     } 
    }); 

    txt_location.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       findPlace(); 
      } 
      return false; 
     } 
    }); 
0

あなたの親レイアウトの元にIDを与える:のLinearLayout、そして、linearLayout.requestFocus()

と私はなどの代替解決策を見つけ、この

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linearlayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:descendantFocusability="beforeDescendants" <-- add this 
    android:focusableInTouchMode="true" <-- add this 
> 

..... 

</LinearLayout> 
+0

'linearLayout.requestFocus()'はどこに置かれますか?私は 'layoutFooter.setOnClickListener(新しいビュー。OnClickListener(){ @Override公共ボイドのonClick(ビューV){ IF(isvalidateFields()){ }他{ ll_address_frag.requestFocus()。 } } }); しかし、@ ZeroOneは動作していません –

関連する問題