我在活动中使用一个类来创建日期选择器对话框,并且在我迁移到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)将不起作用。
先感谢您。
可能有一种更简洁的方法来执行此操作,但是,如果将StartDatePick设为公共和静态,则可以执行以下操作:
在StartDatePicker中创建一个字段来保存对您的外部类的引用
OuterClassType mDateShower;
并为该字段创建设置器。
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");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句