你好,我戴帽子时会遇到这个错误吗?
错误:错误:此片段应提供默认构造函数(不带参数的公共构造函数)(tr.dailyplus.berkaykara.fragments.DatePickerFragment)[ValidFragment]
DatePickerDialog.OnDateSetListener callback;
/**
* Constructor
* @param callback - callback function when a date has been selected
*/
public DatePickerFragment(DatePickerDialog.OnDateSetListener callback) {
this.callback = callback;
}
@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(), callback, year, month, day);
}
}
答案 0 :(得分:1)
片段必须提供无参数构造函数。通过提供自己的构造函数,除非您明确地编写一个构造函数,否则编译器不会提供默认构造函数。
在旁注中,不应该通过构造函数提供参数,而应该提供一个创建者函数,它返回一个片段并为它设置一个参数Bundle,因为它被保留了。
如果你需要实现回调,那么你可以让你的活动实现一个接口,并在你的片段转换上下文中使用这个接口。
答案 1 :(得分:0)
您重写了默认构造函数。您需要提供一个不接受参数的默认构造函数。
如果您需要一种与片段进行通信的方法,那么最好的方法是实现一个接口并使用父Activity进行通信。
请参阅教程here了解其完成方式。具体来看"创建事件回调活动"关于它是如何完成的部分。