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);
}
我正在尝试打开一个对话框来选择 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);
}