使用 DatePickerDialog 选择多个日期
Posted
技术标签:
【中文标题】使用 DatePickerDialog 选择多个日期【英文标题】:Using DatePickerDialog to pick multiple dates 【发布时间】:2015-01-01 08:19:02 【问题描述】:我想在一项活动中从用户那里获取多个日期。 Activity 实现了 onDateSetListener。
我有 4 个按钮,每个按钮都调用 showDialog 函数来显示一个 DatePickerDialog。在 OnDateSet 函数中,如何区分 4 个按钮? (如,我如何检查哪个按钮调用了这个对话框)。
我也有与 TimePicker 类似的问题,但我猜 DatePicker 的解决方案也适用于 TimePicker。
【问题讨论】:
可能重复:***.com/questions/3734981/multiple-datepickers-in-same-activity 【参考方案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
【讨论】:
【参考方案2】:使用以下代码创建 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
【讨论】:
以上是关于使用 DatePickerDialog 选择多个日期的主要内容,如果未能解决你的问题,请参考以下文章
DatePickerDialog 错误地强制要求最短日期为 1970 年 1 月 1 日
android DatePickerDialog怎么设置日期选择范围。
Android - 在 datepickerdialog 中隐藏日期字段
Android:带有取消按钮的DatePickerdialog [重复]