Android DatePickerDialog 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

为什么我会得到一个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;
    }
}
在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()。无论您如何将日历声明为全局实例或本地字段。。。