Android DatePickerDialog NPE
为什么我会得到一个NPE(返回对话框为空)和以下内容Android DatePickerDialog NPE,android,Android,为什么我会得到一个NPE(返回对话框为空)和以下内容 public class ViewCalendar extends DialogFragment implements OnDateSetListener { private Calendar c = Calendar.getInstance(); private DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, c.get(Calendar
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;
}
}
在Java中(我对其他语言了解不多),全局(实例)字段将在对象构造(实例创建)后立即初始化。所以,当您将对话框声明为类似于字段的
public class Sampple extends Fragment {
private DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
}
在这里,
对话框
将在构造函数调用后初始化,并且仍然不调用onAttach()
。因此这里getActivity()
返回null我认为上下文(this)正在变为null。你需要调试它。getActivity()
是空的,除了这个
写getActivity()。这个
然后再试@Nfear@Nfear你可以看看这个。你会了解你自己的<代码>此指的是`实现OnDateSetListener的视图日历
。因此,这是第二个参数<代码>获取活动
是null@Nfear没必要那样getActivity
返回承载此片段的活动如果日历尚未初始化,如何构建对话框?如果您说字段将在对象创建后初始化,这怎么可能呢?您得到NPE只是因为getActivity()。无论您如何将日历声明为全局实例或本地字段。。。