2016-09-20 60 views
2

他們的方法是禁用Datepicker過去一個月刷卡嗎?在DatePicker中禁用滑動到上個月

sample

我碰到這個linkthis。但它似乎不會禁用刷卡/回到上個月。

原因:在當前/未來的日子裏設置任務。

+0

難道我的回答可以幫助您?如果是,請考慮接受 – Marat

回答

1

您可以創建自己的DatePickerDialog類。然後在調用datePicker時以毫安電流傳遞必要的日期。 setMinDate()方法將禁用前幾天,刷卡也將被禁用。

DatePickerDialog類:

public class myDatePickerDialogFragment extends DialogFragment { 

    int mDay, mMonth, mYear; 
    long current; 

    // you also need to pass OnDateSetListener that is implemented in 
    // activity which is calling this datePicker 
    OnDateSetListener onSetDate; 

    public myDatePickerDialogFragment(){ 
    } 

    @Override 
    public void setArguments(Bundle args) { 
     super.setArguments(args); 
     mDay = args.getInt("day"); 
     mMonth = args.getInt("month"); 
     mYear = args.getInt("year"); 
     current = args.getLong("minDate"); 
    } 

    public void setOnDateSetListener(OnDateSetListener setDate){ 
     onSetDate = setDate; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), onSetDate, mYear, mMonth, mDay); 

     // here you set minimum day. User cannot chose earlier dates. 
     datePickerDialog.getDatePicker().setMinDate(current); 

     return datePickerDialog; 
    } 
} 

內活動:

Bundle args = new Bundle(); 
args.putInt("day", mDay); 
args.putInt("month", mMonth); 
args.putInt("year", mYear); 
args.putLong("minDate", yourCalendarObject.getTimeInMillis()); 

myDatePickerDialogFragment dialog = new myDatePickerDialogFragment(); 
dialog.setArguments(args); 
dialog.setOnDateSetListener(datePickerListener); 
dialog.show(getSupportFragmentManager(), "date"); 

OnDateSetListener:

DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 

     // do other work after date is set here 

    } 
}; 
+0

@RoCk是否嘗試過我的解決方案? – Marat