我在我的活动中使用了一个类来创建一个datepicker对话框,它一直在工作,直到我迁移到android studio。 这是班级:
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现在引发错误:此片段类应该是公共的。在我将其声明为public之后,它会引发另一个错误:此片段内部类应该是静态的。 我不想将其声明为静态因为私有void showDate(int year,int month,int day,int day_ofWeek)将无效。
提前谢谢。
答案 0 :(得分:1)
有一种更简洁的方法可以做到这一点但是,如果你将StartDatePick设为public和static,那么你可以这样做:
在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");
}