2017-06-25 11 views
-1

私は、今日より古い日付を選択できないように、最小の日付(現在の日付とする)を設定しようとしています。私はあなたが見ることができるように断片で働いています。私はすでにヘルプを探していましたが、私はコーディングから始まったばかりなので、それは私には分かりませんでした。ここまでは私が今までにコード化したものですが、私はさらに進むことはできません。EditTextフィールドの最小日付を設定するにはどうすればいいですか?

package cm.opep.opep.fragment; 


import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.Toast; 
import cm.opep.opep.R; 


public class RegistrationFragment extends Fragment { 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_registration, container, false); 
     initUI(v); 
     return v; 
    } 

    private void initUI(View v){ 
    //Lancement de la date de naissance 
     EditText datenaissance = (EditText) v.findViewById(R.id.datenaissance); 
     datenaissance.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       DatePickerFragment fragment = new DatePickerFragment(); 
       fragment.show(getFragmentManager(), "datePicker"); 
      } 
     }); 
    } 
} 

ここではXMLコードです:

<LinearLayout xmlns 
    android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="@color/white" 
    tools:context="cm.opep.opep.Tiroir$PlaceholderFragment"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:ignore="UselessParent"> 

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

      <EditText 
       android:id="@+id/datenaissance" 
       android:layout_width="240dp" 
       android:layout_height="wrap_content" 
       android:hint="@string/date_de_naissance" 
       android:inputType="date" 
       android:textColor="@color/colorPrimaryDark" 
       android:textSize="12sp" 
       android:onClick="datePicker" 
       android:focusable="False" 
       android:layout_marginStart="40dp" 
       android:layout_marginEnd="40dp" 
       android:layout_marginLeft="40dp" 
       android:layout_marginRight="40dp"/> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

任意の助けが理解されるであろう。ここ

public class DatePickerFragment extends DialogFragment 
     implements DatePickerDialog.OnDateSetListener { 
     @Override 
     public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
      final Calendar c = Calendar.getInstance(); 
      int year = c.get(Calendar.YEAR); 
      int month = c.get(Calendar.MONTH); 
      int day = c.get(Calendar.DAY_OF_MONTH); 
     // Create a new instance of DatePickerDialog and return it 
      return new DatePickerDialog(getActivity(), this, year, month, day); 
      } 

     @Override 
     public void onDateSet(DatePicker datePicker, int year, int month, int day) { 
      Calendar cal = new GregorianCalendar(year, month, day); 
      setDate(cal); 
     } 

     protected void setDate(final Calendar calendar) { 
      final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT); 
     ((TextView) getActivity().findViewById(R.id.datenaissance)).setText(dateFormat.format(calendar.getTime())); 
     } 
    } 

は、私が働いている第2のフラグメントです。ありがとう

答えて

2

あなたがする必要があるのは、DatePickerDialogのインスタンスを作成し、 'set min date()'関数を使用することです。

public class DatePickerFragment extends DialogFragment 
    implements DatePickerDialog.OnDateSetListener { 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // Use the current date as the default date in the picker 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 
    // Create a new instance of DatePickerDialog and return it 
     DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day); 
    // Here you can set the minimum date on date picker ******** 
     dialog.getDatePicker().setMinDate(new Date().getTime()); 
     return dialog; 
     } 

    @Override 
    public void onDateSet(DatePicker datePicker, int year, int month, int day) { 
     Calendar cal = new GregorianCalendar(year, month, day); 
     setDate(cal); 
    } 

    protected void setDate(final Calendar calendar) { 
     final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT); 
    ((TextView) getActivity().findViewById(R.id.datenaissance)).setText(dateFormat.format(calendar.getTime())); 
    } 
} 

か、このクラスを使用することができます。EDITTEXTクリック用途に

public class StartDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

Calendar c = Calendar.getInstance(); 
int startYear = c.get(Calendar.YEAR); 
int startMonth = c.get(Calendar.MONTH); 
int startDay = c.get(Calendar.DAY_OF_MONTH); 
SharedPreferences objSharedPreferences; 
SharedPreferences.Editor objEditor; 
private Activity activity; 
private View component; 

public StartDatePicker(Activity activity, View component) { 
    this.activity = activity; 
    this.component = component; 
    createSharedPreferences(); 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

    // Use the current date as the default date in the picker 
    DatePickerDialog dialog = new DatePickerDialog(activity, this, startYear, startMonth, startDay); 
    //  dialog.getDatePicker().setMaxDate(new Date().getTime()); 
    //  dialog.getDatePicker().setMinDate(new Date().getTime()); 
    return dialog; 

} 

public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
    try { 
     startDay = dayOfMonth; 
     startMonth = monthOfYear + 1; 
     startYear = year; 

     String dateToBeSet = startDay + "-" + getMonth(startMonth) + "-" + startYear; 

     if (component instanceof EditText) { 
      ((EditText) component).setText(dateToBeSet); 

     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public String getMonth(int month) { 
    return new DateFormatSymbols().getMonths()[month - 1].substring(0, 3); 
} 
} 

このコード:あなたの元に戻すための

DialogFragment dialogFragment = new StartDatePicker(this, fromDateEditText); 
      dialogFragment.show(getFragmentManager(), "start_date_picker"); 
+0

感謝を。あなたの変更を適用しましたが、何も変更されません。私はまだ25/06/2017以前の日付を選択することができます:-( –

+0

あなたはdialog.getDatePicker()を追加しましたか?setMinDate(new Date()。getTime()); " – ManishNegi

+0

はいもう一度おねがいします:-) –

関連する問題