我在我的 Activity 中使用了一个类来创建一个日期选择器对话框,它一直在工作,直到我迁移到 android studio。 这是类(class):
class StartDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// year, month, day από το onCreate
DatePickerDialog dialog = new DatePickerDialog(Add_Expense.this, this, year, month, day);
//DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth);
return dialog;
}
@Override
public void onDateSet(DatePicker view, int year, int month,``
int day) {
processDate(year, month, day);
}
private void processDate(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, day);
int day_ofWeeks = cal.get(Calendar.DAY_OF_WEEK);
showDate(year, month, day, day_ofWeeks);
}
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new StartDatePicker();
newFragment.show(getFragmentManager(), "start_date_picker");
}
StartDatePicker 类现在引发错误:此 fragment 类应该是公共(public)的。在我将其声明为 public 后,它引发了另一个错误:这个 fragment 内部类应该是静态的。 我不想将其声明为静态,因为 private void showDate(int year, int month, int day, int day_ofWeek) 将不起作用。
提前谢谢你。
最佳答案
可能有更简洁的方法来执行此操作,但是,如果您将 StartDatePick 设置为公开和静态,那么您可以这样做:
在 StartDatePicker 中创建一个字段来保存对外部类的引用
OuterClassType mDateShower;
并为该字段创建一个 setter。
public void setDateShower(OuterClassType dateShower) {
mDateShower = dateShower;
}
然后将对 showDate(....);
的调用替换为 mDateShower.showDate(...);
最后设置dateShower
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new StartDatePicker();
newFragment.setDateShower(this);
newFragment.show(getFragmentManager(), "start_date_picker");
}
关于java - 无法创建日期选择器对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266301/