面对android中日期选择器的问题

时间:2011-06-29 05:13:31

标签: android

在我的应用程序中,我必须将日期选择器作为日期和日期。我正在使用onCreateDialog()方法。所以我第一次从日期选择器中选择日期并将它们放在编辑文本中。然后,当我再次从日期选择器中选择日期时,在日期选择器中它显示我已经选择的日期。但是如果我在同一个屏幕(活动)中移动到其他搜索并尝试从日期选择器中选择日期,则日期选择器仍然显示上一个日期。不是现在的日期。

protected Dialog onCreateDialog(int id) {
    final Calendar c = Calendar.getInstance();
    switch (id) {
    case DATE_DIALOG_ID1:
        return new DatePickerDialog(this, mDateSetListener,  c.get(Calendar.YEAR),
                c.get(Calendar.MONTH),  c.get(Calendar.DAY_OF_MONTH));


    case DATE_DIALOG_ID2:
        return new DatePickerDialog(this, mDateSetListener2,  c.get(Calendar.YEAR),
                c.get(Calendar.MONTH),  c.get(Calendar.DAY_OF_MONTH));
    }
    return null;
}

1 个答案:

答案 0 :(得分:1)

可能您可以尝试再次清楚地写出您的问题,但是根据我对您的问题的理解,您可能希望查看您的onDateChanged()回调方法。我假设你在这个onDateChanged()中有一个updateDialog()方法,你可能想检查错误的方法。

我想你看过这个链接,他们展示了如何使用日期选择器http://developer.android.com/resources/tutorials/views/hello-datepicker.html

祝你好运

对于第二个问题,您询问了来自和迄今为止的混合对话

根据你所说的,我认为有类似

这样的小错误

1)使用R.id.datepicker2代替R.id.datepicker1

2)在onDateChangedListener()中混淆了。我确信有更好的方法可以做到这一点,但请尝试检查你是否在2个不同的听众之下喜欢这个

final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);    



DatePicker fromDatePicker = (DatePicker) findViewById(R.id.datePicker1);
    datePicker.init(mYear, mMonth, mDay, new OnDateChangedListener() {

        @Override
        public void onDateChanged(DatePicker view, int year,
                int monthOfYear, int dayOfMonth) {
            //things you want to happen when datepicker1 is changed in your case the From date field     


        }
    });

DatePicker toDatePicker = (DatePicker) findViewById(R.id.datePicker1);
    datePicker.init(mYear, mMonth, mDay, new OnDateChangedListener() {

        @Override
        public void onDateChanged(DatePicker view, int year,
                int monthOfYear, int dayOfMonth) {
            //things you want to happen when datepicker2 is changed in your case the To date field     


        }
    });