如何在按钮单击时显示 DatePickerDialog? [关闭]
Posted
技术标签:
【中文标题】如何在按钮单击时显示 DatePickerDialog? [关闭]【英文标题】:How to show DatePickerDialog on Button click? [closed] 【发布时间】:2017-02-16 09:21:56 【问题描述】:我正在开发一个需要用户选择日期(dd/mm/yyyy)的应用程序。 我想在单击按钮时显示一个带有 DatePicker 的对话框。 选择日期后,它必须显示在 EditText 中。
我使用的是 android Studio 2.2,最小 sdk 的项目是 23。
请帮我完成所需的代码。
【问题讨论】:
你好,你可以试试这个链接它可以帮助你***.com/questions/14933330/… Datepicker: How to popup datepicker when click on edittext的可能重复 blog.nkdroidsolutions.com/… 【参考方案1】:我。在你的 build.gradle 添加最新的 appcompat 库,当时是 24.2.1
dependencies
compile 'com.android.support:appcompat-v7:X.X.X'
// where X.X.X version
二。让您的活动扩展android.support.v7.app.AppCompatActivity
并实现DatePickerDialog.OnDateSetListener
接口。
public class MainActivity extends AppCompatActivity
implements DatePickerDialog.OnDateSetListener
三。创建您的DatePickerDialog
设置上下文、监听器的实现以及日期选择器的起始年、月和日。
DatePickerDialog datePickerDialog = new DatePickerDialog(
context, MainActivity.this, startYear, starthMonth, startDay);
四。在按钮的单击事件侦听器上显示对话框
((Button) findViewById(R.id.myButton))
.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
datePickerDialog.show();
);
【讨论】:
太棒了!!我已经完成了前两个步骤,我在第三步中需要做什么@Saulmm 只需获取日期选择器对话框的实例,因为我在 sn-p 中输入填充所需的参数,然后从按钮的侦听器中触发它。 安全异常【参考方案2】: final Calendar newCalendar = Calendar.getInstance();
final 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():
);
【讨论】:
只需在顶部添加final Calendar newCalendar = Calendar.getInstance();
...然后就完美了【参考方案3】:
它对我有用。如果要启用未来时间供选择,则必须删除最大日期。您需要执行以下操作。
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));
【讨论】:
看起来不错!什么是 ALLOW_PAST @Kayra 你不必使用它,它是给我的。你可以用这个【参考方案4】:以下代码有效..
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);
;
【讨论】:
有效但已弃用。以上是关于如何在按钮单击时显示 DatePickerDialog? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在按钮单击时显示 DatePickerDialog? [关闭]