Android 上的日期选择器错误

Error in Datepicker on Android

我正在尝试打开一个对话框来选择 Android 上的日期。这是我的代码:

 et_date = (EditText) findViewById(R.id.et_date);

    et_date.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            DialogFragment newFragment = new DatePickerFragment();
            newFragment.show(getSupportFragmentManager(), "datePicker");



        }
    }); 

我有这个 class :

 public static class DatePickerFragment extends DialogFragment
            implements DatePickerDialog.OnDateSetListener {

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current date as the default date in the picker
            final Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);

            // Create a new instance of DatePickerDialog and return it
            return new DatePickerDialog(getActivity(), this, year, month, day);
        }

        public void onDateSet(DatePicker view, int year, int month, int day) {
            // Do something with the date chosen by the user
        }
    }

我得到这个错误:

Attempt to invoke virtual method 'void android.widget.EditText.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

我该如何解决这个问题?谢谢

问题是:

et_date 为空。您试图为空对象设置侦听器。这就是为什么,它给出了这个错误。仔细检查您的布局 xml.

为了调试,只需添加空检查并将 lisetner 设置为 "et_date",如下所示

if (ed_date != null)
{
 // print log here to find this as error. 
// set listener here.. 
}

根据您的评论更新:

在您的片段中添加以下代码。将变量 "ed_date" 移动到您的片段,它不应该在 Activity 中。

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        ed_date = (EditText) view.findViewById(R.id.ed_date);
}