(没有参数的公共构造函数)(tr.dailyplus.berkaykara.fragments.DatePickerFragment)[ValidFragment]

时间:2016-03-15 09:04:52

标签: android

你好,我戴帽子时会遇到这个错误吗?

错误:错误:此片段应提供默认构造函数(不带参数的公共构造函数)(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);
}

}

2 个答案:

答案 0 :(得分:1)

片段必须提供无参数构造函数。通过提供自己的构造函数,除非您明确地编写一个构造函数,否则编译器不会提供默认构造函数。

在旁注中,不应该通过构造函数提供参数,而应该提供一个创建者函数,它返回一个片段并为它设置一个参数Bundle,因为它被保留了。

如果你需要实现回调,那么你可以让你的活动实现一个接口,并在你的片段转换上下文中使用这个接口。

答案 1 :(得分:0)

您重写了默认构造函数。您需要提供一个不接受参数的默认构造函数。

如果您需要一种与片段进行通信的方法,那么最好的方法是实现一个接口并使用父Activity进行通信。

请参阅教程here了解其完成方式。具体来看"创建事件回调活动"关于它是如何完成的部分。