【发布时间】:2017-06-04 01:10:53
【问题描述】:
我已经在我的 android 应用程序中定义了 DatePickerFragment,下面是它的代码:
公共类 DatePickerFragment 扩展 DialogFragment 实现 DatePickerDialog.OnDateSetListener { 私人 int 年; 私人 int 月; 私人国际日; @覆盖 公共对话 onCreateDialog(Bundle savedInstanceState) { // 使用当前日期作为选择器中的默认日期 最终日历 c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int 月 = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // 创建一个新的 DatePickerDialog 实例并返回它 return new DatePickerDialog(getActivity(), this, year, month, day); } @覆盖 public void onDateSet(DatePicker view, int year, int month, int day) { this.year = 年; this.month = 月; this.day = 天; } 公共日期 getDateFromDatePicker(){ 日历日历 = Calendar.getInstance(); calendar.set(年、月、日); 返回日历.getTime(); } }我想从 TaskFragment 的这个日期选择器中检索日期,并将我的类 Task 中的“日期”属性设置为等于所选日期
// Method for date picker to appear once the "Due Date" button is clicked.
datePickerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getActivity().getFragmentManager();
DatePickerFragment datePicker = new DatePickerFragment();
datePicker.show(fm, "datePicker");
task.setDate(datePicker.getDateFromDatePicker());
//test
System.out.println(task.getDate());
}
});
单击按钮时会出现日期选择器。但是,日期设置不正确,实际上是在按下日期按钮后立即设置的,而不是在从选择器中选择日期时设置的。 此外,在打印日期时,无论选择什么日期,我都会得到以下信息: I/System.out:12 月 31 日星期三 10:47:38 GMT+00:00 2 阅读此处的一些解决方案指导我定义 onDateSet 和 getDateFromDatePicker 方法,但它们似乎无法正常运行。 非常感谢任何帮助,谢谢!
【问题讨论】:
-
你在哪里显示日期选择器,在活动中?
-
在名为 TaskFragment 的片段中没有。
-
我发现对方法 getDateFromDatePicker 的调用发生在调用 onDateSet 方法之前,所以我想我必须从 onDateSet 获取值并将它们存储在某个地方,以便它们可以被TaskFragment 类。
标签: android date android-dialogfragment datepickerdialog