2014-11-05 47 views
0

我想在一个活动中从用户处获取多个日期。该活动实现onDateSetListener。使用DatePickerDialog选择多个日期

我有4个按钮,每个按钮都会调用showDialog函数来显示DatePickerDialog。在OnDateSet函数中,我如何区分4个按钮? (如,我如何检查哪个按钮叫做这个对话框)。

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

+0

可能重复:[stackoverflow.com/questions/3734981/multiple-datepickers-in-same-activity](http://stackoverflow.com /问题/ 3734981 /多datepickers功能于同一活动) – Endor 2014-11-05 08:00:28

回答

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 
    } 

} 
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()调用