创建Fragment 的newInstance方法
创建 newInstance()方法, newInstance方法中给Fragment 设置Argument
private static final String ARGS_DATE = "date";
public static MyFragment newInstance(Date date){
Bundle args = new Bundle();
args.putSerializable(ARGS_DATE,date);
MyFragment fragment = new MyFragment();
fragment.setArguments(args);
return fragment;
}
然后在MyFragment的create方法中获取args,并对Fragment进行初始化.
Date date = (Date) getArguments().getSerializable(ARGS_DATE);
完整代码:
public class DatePickerFragment extends DialogFragment {
private static final String ARGS_DATE = "date";
private DatePicker mDatePicker;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Date date = (Date) getArguments().getSerializable(ARGS_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 view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_date, null);
mDatePicker = (DatePicker) view.findViewById(R.id.dialog_date_picker);
mDatePicker.init(year,month,day,null);
return new AlertDialog.Builder(getActivity())
.setView(view)
.setTitle(R.string.date_picker_title)
.setPositiveButton(android.R.string.ok,null)
.create();
}
public static DatePickerFragment newInstance(Date date){
Bundle bundle = new Bundle();
bundle.putSerializable(ARGS_DATE, date);
DatePickerFragment datePickerFragment = new DatePickerFragment();
datePickerFragment.setArguments(bundle);
return datePickerFragment;
}
}
调用代码
mDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerFragment picker = DatePickerFragment.newInstance(mCrime.getDate());
FragmentManager manager =getFragmentManager();
picker.show(manager,DIALOG_DATE);
}
});