Datepicker作为对话框

时间:2015-10-29 12:13:59

标签: android datepicker

我必须在片段中写一个日期选择器。 单击编辑文本(不可编辑)时,日期选择器必须作为对话框启动。 我想在不编写任何自定义日期选择器类的情况下完成此操作,只需在单击编辑文本时启动默认日期选择器即可。 所选日期应显示在编辑文本中。

非常感谢任何帮助。

提前致谢。

3 个答案:

答案 0 :(得分:0)

尝试以下代码: -

`Calendar myCalendar = Calendar.getInstance();

DatePickerDialog.OnDateSetListener date = new     
DatePickerDialog.OnDateSetListener() {

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
    // TODO Auto-generated method stub
    myCalendar.set(Calendar.YEAR, year);
    myCalendar.set(Calendar.MONTH, monthOfYear);
    myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
    updateLabel();
}

};

edittext.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        new DatePickerDialog(classname.this, date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH)).show();
    }
});

  private void updateLabel() {

String myFormat = "MM/dd/yy"; //In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

edittext.setText(sdf.format(myCalendar.getTime()));
}`

答案 1 :(得分:0)

创建 DatePickerFragment

public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        int day;
        int month;
        int year;
        //do stuff

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {
        //do stuff
    }
}

并单击editText(将其设置为focusable = false),请调用以下方法:

public void showDatePickerDialog(View v) {
    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(getActivity().getSupportFragmentManager(), "datePicker");
}

答案 2 :(得分:0)

试试这个:

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

DatePickerDialog dpd = new DatePickerDialog(this,
        new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year,
                    int monthOfYear, int dayOfMonth) {
                txtDate.setText(dayOfMonth + "-"
                        + (monthOfYear + 1) + "-" + year);

            }
        }, mYear, mMonth, mDay);
dpd.show();