如何从类中创建一个不扩展Activity,Android的DatePicker?

时间:2012-10-09 11:57:37

标签: java android android-widget

我正在尝试从不扩展Activity类的类创建DatePicker对话框。我需要在名为EnterDate的类中使用DatePicker,该类具有包含Activity Context的Context属性。

WEB上的所有DatePicker示例都是用Activity类编写的基本示例,这就是为什么它们让我感到困惑。

我希望日期选择器在Android上的效果低于3.0。我不使用XML布局。

所以基本上我需要建议放在onCreateDialog()的位置,如何检索选择的时间等等。

我的Button有onClickListener()来调用DatePicker。

一小时前我为TimePicker问了同样的问题并得到了这个答案: How to create a TimePicker from class which do not extends Activity, Android?

我认为该解决方案只需要稍微修改即可像DatePicker一样工作..

TNX

2 个答案:

答案 0 :(得分:1)

修改后的课程

public class MyDatePicker {
DatePickerDialog mDatePickerDialog;


public interface onDateSet {
    public void onDate(DatePicker view, int year, int monthOfYear,
            int dayOfMonth);
}

onDateSet mOnDateSet;

public void setDateListener(onDateSet mOnDateSet) {
    this.mOnDateSet = mOnDateSet;
}
public MyDatePicker(Context ctx) {
    mDatePickerDialog = new DatePickerDialog(ctx, new OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            mOnDateSet.onDate(view, year, monthOfYear, dayOfMonth);

        }
    }, 2000, 1, 1);
}

public void show() {
    mDatePickerDialog.show();
}

和..

 public void ShowDatePicker() {
        MyDatePicker myTimePicker = new MyDatePicker(this);
        myTimePicker.show();
    myTimePicker.setDateListener(new onDateSet() {

        @Override
        public void onDate(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            Toast.makeText(MainActivity.this,
                    "date is " + year + ":" + monthOfYear+":"+dayOfMonth,
                    Toast.LENGTH_LONG).show();

        }
    });
}

答案 1 :(得分:0)

您无需创建和显示对话框的活动。您可以使用辅助类DatePickerDialog.Builder创建带有回调和init数据的Dialog,然后为此构建器调用show()

仅当您处于UI线程时才会起作用。