gpt4 book ai didi

android - 日期选择器对话框监听器

转载 作者:行者123 更新时间:2023-12-04 18:10:12 25 4
gpt4 key购买 nike

我必须使用 DatePickerDialog 来获取 TextView 中的选定日期。当我单击 TextView 时,应该会出现 DatePickerDialog。

这是我写的

private DatePickerDialog.OnDateSetListener dateOnDateSetListener = new DatePickerDialog.OnDateSetListener() {

@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
datePick.setText(new StringBuilder().append(selectedDay).append("-").append(selectedMonth).append("-").append(selectedYear));
}
};

datePick = (TextView) findViewById(R.id.date_pick);

datePick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Calendar calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
monthOfYear = calendar.get(Calendar.MONTH);
dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
new DatePickerDialog(getContext(), dateOnDateSetListener, year, monthOfYear, dayOfMonth);
}
});

但是它不起作用。因此,通过很少的谷歌搜索,我将其更改为此及其工作,但我无法理解为什么会这样?我在上面的代码中弄乱了什么吗

datePick = (TextView) findViewById(R.id.date_pick);

datePick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Calendar calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
monthOfYear = calendar.get(Calendar.MONTH);
dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
showDialog(DATE_DIALOG_ID);
}
});

@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
// set date picker as current date
return new DatePickerDialog(this, dateOnDateSetListener,
year, monthOfYear,dayOfMonth);
}
return null;
}

private DatePickerDialog.OnDateSetListener dateOnDateSetListener = new DatePickerDialog.OnDateSetListener() {

@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
datePick.setText(new StringBuilder().append(selectedDay).append("-").append(selectedMonth).append("-").append(selectedYear));
}
};

最佳答案

But its not working. So with little googling I changed it to this and its working, but I am not able to understand why is it so? Did I mess something in above code

您并没有真正搞砸任何事情,您只是忘记了在对话框中调用 .show();即:

new DatePickerDialog(getContext(), dateOnDateSetListener, year, monthOfYear, dayOfMonth).show();

它在第二个代码 fragment 中没有 .show() 的情况下工作的原因是因为 Activity 管理对话框,因此将负责调用该方法在 onCreateDialog(int id) 中返回的对话框。

通常我会推荐第二种方法,因为您真的不想自己管理对话框的生命周期 - 只是因为当您的 Activity 因配置更改等而重新创建时,很难做到正确。但是,对于一个更现代的解决方案,使用 fragment ,你应该考虑将对话框包装在 DialogFragment 中(支持库中还有一个版本适用于 Honeycomb 之前的设备)。

关于android - 日期选择器对话框监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15759324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com