【发布时间】:2026-01-17 03:35:02
【问题描述】:
我在片段中有 datepicker dialogframgent,当我在 onDateSet() 方法中记录日期时,我只从 datepicker spinner 获取原始日期而不是更改日期。我一直在关注http://developer.android.com/guide/topics/ui/controls/pickers.html 的示例,因为我是 android 新手。知道我做错了什么吗?
对话框片段
public static class DobFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{
final Calendar calendar = Calendar.getInstance();
DatePicker picker;
protected DialogInterface.OnClickListener btn_ok_listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
picker.clearFocus();
onDateSet(picker, picker.getYear(), picker.getMonth(), picker.getDayOfMonth());
}
};
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
View spinner = inflater.inflate(R.layout.date_spinner, null);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
picker = datePickerDialog.getDatePicker();
datePickerDialog.setCancelable(true);
datePickerDialog.setCanceledOnTouchOutside(true);
datePickerDialog.setView(spinner);
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Ok", btn_ok_listener);
datePickerDialog.onDateChanged(picker,picker.getYear(),picker.getMonth(),picker.getDayOfMonth());
datePickerDialog.setTitle("Birthday");
return datePickerDialog;
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Log.v("dates",String.valueOf(picker.getYear()) +"-" + String.valueOf(year) +"-" + String.valueOf(calendar.getTime()));
// Intent intent = new Intent();
// intent.putExtra("result",formattedDate);
// getTargetFragment().onActivityResult(getTargetRequestCode(), 1, intent);
}
}
显示对话框方法
public void showDobDialog() {
FragmentManager fragManager = myContext.getFragmentManager();
DialogFragment frag = new DobFragment();
frag.setTargetFragment(this,1);
frag.show(fragManager, "dob");
}
日期微调器布局
<?xml version="1.0" encoding="utf-8"?>
<DatePicker
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:datePickerMode="spinner"
android:calendarViewShown="false">
</DatePicker>
从 OnDateSet 记录
2015-2015-Fri Aug 07 19:35:55 PDT 2015
我的 DatePicker 测试运行 - 原始日期 2015 年 8 月 7 日
【问题讨论】:
-
当我不设置自己的视图时,它可以正常工作,但我想要一个微调器而不是日历。
标签: android datepicker android-dialogfragment