2015-10-13 42 views
0

我有一个活动2 EditText(startDate和endDate)。如何使用一个DatePickerDialog多个EditText

我创建了一个功能,我传递一个EditText,它会显示一个datepicker:

private void showDatePicker(EditText et) { 

    Calendar calendar = Calendar.getInstance(); 

    DatePickerDialog picker = new DatePickerDialog(getActivity(), this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); 

    if (!Global.isEmpty(et)) { 

     try { 
      SimpleDateFormat sdf = new SimpleDateFormat(Global.USER_FRIENDLY_DATE_FORMAT, Locale.getDefault()); 
      calendar.setTime(sdf.parse(et.getText().toString())); 
     } catch (ParseException e) { 
      Toast.makeText(getActivity(), "Error setting the date", Toast.LENGTH_SHORT).show(); 
     } 
    } 
    picker.show(); 
} 

当我拿起一个日期,我会得到一个回调到onDateSet()函数的日期choosen 。

我的问题是,我怎么知道它是哪个EditText?

我知道有一个“DatePicker视图”作为参数传递给onDateSet(),但似乎无法弄清楚如何使用它,或者即使我应该。

+0

看看这个[文章](http://stackoverflow.com/questions/30431250/how-to-achieve-multiple-datepicker-functionality-with-two-buttons-and-保存-那些/ 30433506#30433506)。 –

回答

1

你可以通过调用picker.getDatePicker()setTag()。同样标签的标签设置为您DatepickerDialog的DatePicker的对象可以从日期选择对象的回调函数来检索onDateSet()

DatePickerDialog picker = new DatePickerDialog(getActivity(), listner , calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); 
DatePicker pick = picker.getDatePicker().setTag(et.getId()); 

public void onDateSet(DatePicker datePicker, int i, int i1, int i2) { 
    Log.d("", " " + datePicker.getTag()); 
// based on the returned tag you can decide what to do... 

} 
+0

不,这个if语句应该在onDateSet()中,这是一个监听器回调函数,我没有参考EditText。除非我将“选择的”EditText设置为全局变量。但是,我想知道是否有可能使用onDateSet()中传递的DatePicker来实现此目的。 –

+0

尝试在创建对话框时在DatePicker对象中设置标签,并在回调中将其与其进行比较。 – Atmaram

+0

我也想到了这一点,但选择器对象上没有setTag方法:) –

0

您可以使用此代码作为我的应用程序

public void showDialog(EditText ed){ 
    final EditText e = ed; 
    e.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      final Calendar c = Calendar.getInstance(); 
      int mYear = c.get(Calendar.YEAR); // current year 
      int mMonth = c.get(Calendar.MONTH); // current month 
      int mDay = c.get(Calendar.DAY_OF_MONTH); // current day 

      dpd = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() { 
       @Override 
       public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) { 
        e.setText(dayOfMonth + "/"+ (monthOfYear+1) + "/" + year); 
       } 
      },mYear,mMonth,mDay); 
      dpd.show(); 
     } 
    }); 
} 
0
DatePickerDialog picker= new DatePickerDialog(getActivity(), this, year, month,day); 
picker.getDatePicker().setTag("id") 
相关问题