【发布时间】:2014-01-08 19:22:30
【问题描述】:
为什么我会得到一个带有以下内容的 NPE(返回对话框为空)?
public class ViewCalendar extends DialogFragment implements OnDateSetListener {
private Calendar c = Calendar.getInstance();
private DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return dialog;
}
}
以下确实有效。为什么?
public class ViewCalendar extends DialogFragment implements OnDateSetListener {
private Calendar c = Calendar.getInstance();
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
return dialog;
}
}
【问题讨论】:
-
我认为上下文(this)越来越空。你需要调试它。
-
getActivity()为空 -
除了
this写getActivity().this并尝试。 @Nfear -
@Nfear 你可以看看这个developer.android.com/reference/android/app/…。你会认识你自己。
this指的是ViewCalendar,其中`implements OnDateSetListener。因此this是第二个参数。getActivity为空 -
@Nfear 不需要。
getActivity返回承载此片段的活动
标签: android