2016-06-27 7 views
0

Kann mir bitte jemand wissen, wie kann das ausgewählte Datum auf DatePickerDialog gesetzt, d., Wenn ich das Datum auswählen und wenn ich den Dapickerdialog wieder öffnen sollte es das ausgewählte Datum anstelle des aktuellen Datums zeigen. Und auch wie kann ich die anderen Jahre aus dem Datepickerdialog deaktivieren, d. H. Nur das aktuelle Jahr und das kommende Jahr Datum wird nur wählbar sein. Wenn es einen Bibliotheksvorschlag gibt, den ich verwenden kann, lass es mich wissen.Anpassen datepickerdialog in fragmens

Ich habe viel gesucht, aber niemand erfüllt meine Anforderung.

Vielen Dank im Voraus

Antwort

0

Es kann Ihnen helfen, den Code unten und ändern entsprechend Ihrer Einstellung

public class TodayTabFragment extends Fragment { 
    Activity mActivity; 
    SharedPreferences mSharedPreferences; 
    @Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mActivity=getActivity(); 
     mSharedPreferences= mActivity.getSharedPreferences("selected_date", Context.MODE_PRIVATE); 

    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.news_fragment_today_layout, null); 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH); 
     try { 
      Calendar mCalendar = Calendar.getInstance(); 
      int YEAR=mSharedPreferences.getInt("year",0); 
      if (YEAR==0) 
       YEAR=mCalendar.get(Calendar.YEAR); 
      int MONTH=mSharedPreferences.getInt("monthOfYear",0); 
      if (MONTH==0) 
       MONTH=mCalendar.get(Calendar.MONTH); 
      int DAY_OF_MONTH=mSharedPreferences.getInt("dayOfMonth",0); 
      if (DAY_OF_MONTH==0) 
       DAY_OF_MONTH=mCalendar.get(Calendar.DAY_OF_MONTH); 
      DatePickerDialog datePickerDialog = new DatePickerDialog(mActivity, new DatePickerDialog.OnDateSetListener() { 
       public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
        Calendar newDate = Calendar.getInstance(); 
        newDate.set(year, monthOfYear, dayOfMonth); 
        SharedPreferences.Editor editor = mSharedPreferences.edit(); 
        editor.putInt("year", year); 
        editor.putInt("monthOfYear", monthOfYear); 
        editor.putInt("dayOfMonth", dayOfMonth); 
        editor.apply(); 
        System.out.print(dateFormatter.format(newDate.getTime())); 
       } 

      }, YEAR, MONTH, DAY_OF_MONTH); 
      DatePicker datePicker = datePickerDialog.getDatePicker(); 
      Date minDate = dateFormatter.parse((YEAR-1)+"-"+MONTH+"-"+DAY_OF_MONTH); 
      datePicker.setMinDate(minDate.getTime()); 
      Date maxDate = dateFormatter.parse((YEAR+1)+"-"+MONTH+"-"+DAY_OF_MONTH); 
      datePicker.setMaxDate(maxDate.getTime()); 
      datePickerDialog.show(); 
     }catch (Exception e){ 
      Log.printStackTrace(e); 
     } 
    } 

} 
+0

Hallo, vielen Dank für Ihre Antwort, aber wie deaktiviere ich die kommenden Jahre aus dem Kalender und Satz versuchen das ausgewählte Datum auf Datepicker beim nächsten öffnen –

+0

nein, funktioniert nicht. Verwenden dtaepickerdialog in Fragmenten –

+0

Überprüfen Sie Ihren Code .. Ich habe gerade versucht mich selbst in Fragment .. es funktioniert gut für mich..Ich aktualisiere Deaktivieren Datum unter einem Jahr und nach einem Jahr. Ändern Sie die Bedingung entsprechend Ihrer Anforderung. –