如何在主机 activity 的片段中的 DatePickerDialog 中设置默认日期?
How do I set the default date in a DatePickerDialog in my fragment from the host activity?
所以我在 Activity 中创建了一个日历对象 "c" 并将日期设置为 2016 年 2 月 29 日。我希望片段对话框加载该日期作为默认日期。我在这里错过了什么?我是否需要删除片段日历对象 'cal'?如果是这样,在片段 onCreateDialog 中,我如何引用或 get() 来自 Activity?
中 set() 方法的日期
来自 Activity 文件:
@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");
来自片段文件:
...
@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;
您在 Activity 中设置的 Calendar c
与片段中的 Calendar cal
不同,它们是两个不同的实例。
我建议您使用 Bundle
将年、月和日传递给片段,这样您会想去:
Bundle data = new Bundle();
data.putInt("...", "..."); //
DialogFragment df = new DialogFragment();
df.setArguments(data);
然后在您的 onCreateDialog
片段中,使用以下方法检索数据:
int year = getArguments("...");
所以我在 Activity 中创建了一个日历对象 "c" 并将日期设置为 2016 年 2 月 29 日。我希望片段对话框加载该日期作为默认日期。我在这里错过了什么?我是否需要删除片段日历对象 'cal'?如果是这样,在片段 onCreateDialog 中,我如何引用或 get() 来自 Activity?
中 set() 方法的日期来自 Activity 文件:
@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");
来自片段文件:
...
@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;
您在 Activity 中设置的 Calendar c
与片段中的 Calendar cal
不同,它们是两个不同的实例。
我建议您使用 Bundle
将年、月和日传递给片段,这样您会想去:
Bundle data = new Bundle();
data.putInt("...", "..."); //
DialogFragment df = new DialogFragment();
df.setArguments(data);
然后在您的 onCreateDialog
片段中,使用以下方法检索数据:
int year = getArguments("...");