如何显示button上的DatePickerDialog单击?

我正在开发一个需要用户selectdate(日/月/年)的应用程序。 我想在button单击时显示DatePicker对话框。 一旦selectdate,它必须显示在EditText中。

我正在使用Android Studio 2.2,min sdk的项目是23。

请帮助我做必要的代码。

Solutions Collecting From Web of "如何显示button上的DatePickerDialog单击?"

在这里输入图像说明

I.在你的build.gradle中添加最新的appcompat库,在时间24.2.1

dependencies { compile 'com.android.support:appcompat-v7:XXX' // where XXX version } 

II。 使您的活动扩展android.support.v7.app.AppCompatActivity并实现DatePickerDialog.OnDateSetListener接口。

 public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener { 

III。 创buildDatePickerDialog设置上下文,监听器的实现以及dateselect器的开始年份,月份和date。

 DatePickerDialog datePickerDialog = new DatePickerDialog( context, MainActivity.this, startYear, starthMonth, startDay); 

IV。 在你的button的点击事件监听器上显示你的对话框

 ((Button) findViewById(R.id.myButton)) .setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { datePickerDialog.show(); } }); 
 DatePickerDialog StartTime = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar newDate = Calendar.getInstance(); newDate.set(year, monthOfYear, dayOfMonth); activitydate.setText(dateFormatter.format(newDate.getTime())); } }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); btn_checkin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { StartTime .show(): }); 

这个对我有用。 如果你想启用未来的时间select,你必须删除maxDate。

  btnDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DialogFragment newFragment = new DatePickerFragment(); newFragment.show(getSupportFragmentManager(), "datePicker"); } }); public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day); dialog.getDatePicker().setMaxDate(c.getTimeInMillis()); return dialog; } public void onDateSet(DatePicker view, int year, int month, int day) { btnDate.setText(ConverterDate.ConvertDate(year, month + 1, day)); } } 

下面的代码工程..

 datePickerButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showDialog(0); } }); @Override @Deprecated protected Dialog onCreateDialog(int id) { return new DatePickerDialog(this, datePickerListener, year, month, day); } private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) { day = selectedDay; month = selectedMonth; year = selectedYear; datePickerButton.setText(selectedDay + " / " + (selectedMonth + 1) + " / " + selectedYear); } };