通过DialogFragment从DatePicker或TimePicker中获取日期数据
一个activity类,里面存有date和time的变量,想通过dialogfragment的方式获取用户输入的数据,来设置activity类中的变量,
首先说DatePicker
activity里面有更改date的按钮,点击这个按钮,就会弹出一个dialogFragment,设置完date后点击dialog中的设置,设置的date应用到activity中的变量
实现方法
一个MyDatePickerDialogFragment类代码:MyDatePickerDialogFragment.class
package com.example.setup; import java.util.Calendar; import android.app.DatePickerDialog; import android.app.Dialog; import android.app.DialogFragment; import android.os.Bundle; public class MyDateDialogFragment extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { final Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); return new DatePickerDialog(getActivity(), (AddRecordActivity)getActivity(), year, month, day); } }
parent activity是 AddRecordActivity, 它继承了Activity,实现了DatePickerDialog.OnDateSetListener接口,而DatePickerDialog.OnDateSetListener接口必须实现一个方法
@Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDayOfMonth = dayOfMonth; updateDisplay(); }
这个方法就是监听的当用户设置完date后,确认的事件,所以这个方法里面实现了当用户设置完date后,对parent中的变量mYear mMonth mDayOfMonth的更新。
至于TimePicker的实现的方式和DatePicker类似。