2015-11-11 5 views
0

Я создал свой собственный DatePicker, теперь сбор даты работает, но я хотел бы ограничить его тем, что у пользователя не будет возможности выбрать дату, которая находится до текущей даты. в следующем коде, когда я выбрать дату 11.11.15 я получаю следующие печатныеDatePicker onDataSet не работает должным образом

D/this date﹕ 2015 11 11 
D/this date﹕ 2015 11 9 

, но до сих пор не проникая внутрь моего, если:

if(this.year < year || this.month < monthOfYear || this.day < dayOfMonth) 

это весь код:

package com.example.matant.gpsportclient.Utilities; 

import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.app.DialogFragment; 
import android.os.Bundle; 
import android.util.Log; 

import com.example.matant.gpsportclient.InterfacesAndConstants.OnCompleteListener; 

import java.util.Calendar; 
import java.util.Date; 

/** 
* Created by matant on 9/10/2015. 
*/ 
public class DatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    private OnCompleteListener mListener; 
    private int year,month,day; 
    private Calendar cal; 


    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     try{ 
      mListener = (OnCompleteListener) getTargetFragment(); 
     }catch (ClassCastException e) 
     { 
      Log.d("Class casting Error", e.getMessage()); 
     } 
    } 


    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     Date today = new Date(); 
      cal = Calendar.getInstance(); 
     cal.setTime(today); 
     cal.add(Calendar.MONTH,-6); 
     long minDate = cal.getTime().getTime(); 
     year = cal.get(Calendar.YEAR); 
     month = cal.get(Calendar.MONTH); 
     day = cal.get(Calendar.DAY_OF_MONTH); 

     DatePickerDialog pickerDialog = new DatePickerDialog(getActivity(), this, year, month, day); 
     pickerDialog.getDatePicker().setMinDate(minDate); 
     return pickerDialog; 

    } 

    @Override 
    public void onDateSet(android.widget.DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
     Log.d("Calendar",String.valueOf(dayOfMonth)+"/"+String.valueOf(monthOfYear)+"/"+String.valueOf(year)); 
     { 
      Log.d("this date",String.valueOf(this.year)+" "+String.valueOf(this.month)+" "+String.valueOf(this.day)); 
      Log.d("this date",String.valueOf(year)+" "+String.valueOf(monthOfYear)+" "+String.valueOf(dayOfMonth)); 

      if(this.year < year || this.month < monthOfYear || this.day < dayOfMonth) 
      { 
       Log.d("date no valid","wrong date"); 
       mListener.onComplete("Date_not_valid","Please insert a valid date!"); 
      }else{ 
       Log.d("date valid","date"); 
       mListener.onComplete("date",String.valueOf(dayOfMonth)+"/"+String.valueOf(monthOfYear+1)+"/"+String.valueOf(year)); 
      } 

     } 

    } 
} 

ответ

1

DatePicker имеет функцию для установки минимальной даты.

DatePicker setMinDate()

Попробуйте использовать это в диалоговом фрагмента.

+0

где я должен использовать эту функцию? внутри onCreatedialog или inDataSet? –

+0

У меня также была ошибка в условии if его должно быть "this.day> dayOfMonth" –

Смежные вопросы