public class DatePickerFragment extends DialogFragment {@Overridepublic Dialog onCreateDialog(Bundle saveInstanceState){return new AlertDialog.Builder(getActivity()).setView(v).setTitle(R.string.date_picker_title).setPositiveButton(android.R.string.ok,.create();}
創建AlertDialog;
public Dialog onCreateDialog(Bundle saveInstanceState){Date date = (Date) getArguments().getSerializable(ARG_DATE);Calendar calendar = Calendar.getInstance();calendar.setTime(date);int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH);int day = calendar.get(Calendar.DAY_OF_MONTH);View v = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_date,null);mDatePicker = (DatePicker) v.findViewById(R.id.dialog_date_picker);mDatePicker.init(year,month,day,null);return new AlertDialog.Builder(getActivity()).setView(v).setTitle(R.string.date_picker_title).setPositiveButton(android.R.string.ok,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {int year = mDatePicker.getYear();int month = mDatePicker.getMonth();int day = mDatePicker.getDayOfMonth();Date date = new GregorianCalendar(year,month,day).getTime();sendResult(Activity.RESULT_OK,date);}}).create();}
private static final String ARG_DATE = "date";
private DatePicker mDatePicker;
public static DatePickerFragment newInstance(Date date) {
Bundle args = new Bundle();
args.putSerializable(ARG_DATE, date);DatePickerFragment fragment = new DatePickerFragment();
fragment.setArguments(args);
return fragment; @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { //創建了AlertDialog的實例
//CrimeFragment向DatePickerFragment傳遞日期
Date date = (Date) getArguments().getSerializable(ARG_DATE);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
返回數據給CrimeFragment
設置目標Fragment
private static final int REQUEST_DATE = 0;
傳遞數據給目標Fragment
public static final String EXTRA_DATE ="com.example.criminalintent.date";
? private void sendResult(int resultCode, Date date) {
if (getTargetFragment() == null) {
return;
}
Intent intent = new Intent();
intent.putExtra(EXTRA_DATE, date);
getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent);}
響應對話框
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
//super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK) {
return;
}
if (requestCode == REQUEST_DATE) {
Date date = (Date) data.getSerializableExtra(DatePickerFragment.EXTRA_DATE);
mCrime.setDate(date);
mDateButton.setText(mCrime.getDate().toString());
//updateDate();
}
public class CrimeDbSchema {
public static final class CrimeTable {
public static final String NAME = "crimes";
}
}
定義數據表字段(有了這些數據表元素就可以在Java代碼中安全的引用)
public static final class Cols {
public static final String UUID = "uuid";
public static final String TITLE = "title";
public static final String DATE = "date";
public static final String SOLVED = "solved";
}