所以我创建了一个日历对象" c"在活动中并将日期设置为2016年2月29日。我希望片段对话框将该日期加载为默认日期。我在这里错过了什么?我是否需要删除片段日历对象' cal'?如果是这样,在片段onCreateDialog中如何从Activity中的set()方法引用或获取()日期?
来自活动文件:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
final Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2016);
c.set(Calendar.MONTH, 1);
c.set(Calendar.DAY_OF_MONTH, 29);
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
来自Fragment文件的:
...
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar cal = Calendar.getInstance();
currentyear = cal.get(Calendar.YEAR);
currentmonth = cal.get(Calendar.MONTH);
currentday = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dateDialog = new DatePickerDialog(this.getActivity(), this, currentyear,currentmonth,currentday);
return dateDialog;
答案 0 :(得分:1)
您在Activity中设置的Calendar c
与您片段中的Calendar cal
不同,它们是两个不同的实例。
我建议你使用Bundle
将年,月和日传递给片段,所以你想要去:
Bundle data = new Bundle();
data.putInt("...", "..."); //
DialogFragment df = new DialogFragment();
df.setArguments(data);
然后在片段中的onCreateDialog
中,使用以下方法检索数据:
int year = getArguments("...");