使用DatePickerDialog选择多个日期

时间:2014-11-05 07:55:44

标签: android android-datepicker android-timepicker

我想在一个活动中从用户那里获得几个日期。该活动实现onDateSetListener。

我有4个按钮,每个按钮调用showDialog函数来显示DatePickerDialog。在OnDateSet函数中,如何区分4个按钮? (如,如何检查称为此对话框的按钮)。

我也有与TimePicker类似的问题,但我猜测DatePicker的解决方案也适用于TimePicker。

2 个答案:

答案 0 :(得分:1)

您可以为DatePicker添加标记。在创建对话框时执行:

mDatePickerDialog.getDatePicker().setTag(FIRST_DIALOG);

例如,FIRST_DIALOG是整数或字符串; 然后你只使用一个onDateSetListener:

onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
    int code = (Integer) view.getTag(); //if you are using integers
    switch(code)
    {
        // switch between your datePicker
    }

}

答案 1 :(得分:0)

使用以下代码

创建CustomDatePickerDialog
public class CustomDatePickerDialog extends DatePickerDialog
{
    public CustomDatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth,View attachedView)
    {
        super(context, callBack, year, monthOfYear, dayOfMonth);
        getDatePicker().setTag(attachedView.getId());
    }

    public CustomDatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)
    {
        super(context, callBack, year, monthOfYear, dayOfMonth);
    }

    public CustomDatePickerDialog(Context context, int theme, OnDateSetListener listener, int year, int monthOfYear, int dayOfMonth)
    {
        super(context, theme, listener, year, monthOfYear, dayOfMonth);
    }
}

如下所示调用

btnSelectDate.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View view)
    {
        CustomDatePickerDialog customDatePickerDialog = new CustomDatePickerDialog(MainActivity.class,dateSetListener,2014,10,1,view);
        customDatePickerDialog.show();
    }
});

您将在侦听器中获得如下所示的按钮调用对话框

DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener()
{
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
    {
        int viewID = view.getTag();
        switch(viewID)
        {
            case R.id.btnDatePicker1;
            {
                //DO Something
            }
            case R.id.btnDatePicker2;
            {
                //DO Something
            }
        }
    }
};

注意:自定义对话框中的getDatePicker()调用需要API级别11