为什么我会得到一个NPE (返回对话框为null)?
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;
}
}发布于 2014-01-08 11:22:30
在Java中(我对其他语言不太了解),在构造对象(创建实例)之后,将立即初始化全局(实例)字段。因此,当您将Dialog声明为字段时,如
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));
}在这里,Dialog将在构造函数调用后初始化,而onAttach()仍然不被调用。因此,这里getActivity()返回null
https://stackoverflow.com/questions/20993821
复制相似问题