2016-03-15 74 views
0

你好,我遇到這個錯誤,而帽子從何而來?(公共構造不帶參數)(tr.dailyplus.berkaykara.fragments.DatePickerFragment)ValidFragment]

錯誤:錯誤:該片段應提供一個默認的構造(不帶參數的公共構造)(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); 
} 

}

回答

1

片段必須提供一個無參數的構造函數。通過提供您自己的構造函數,編譯器將不會提供默認構造函數,除非您明確寫出構造函數。

在一個側面說明,而不是通過構造函數提供參數,你應該提供一個返回片段,並設置一個參數捆綁它,因爲它保留了創造者的功能。

如果你需要實現回調,那麼你可以讓你的活動實現一個接口,並在片段投上下文到該接口。

0

你重寫默認的構造函數。你需要提供一個不接受參數的默認構造函數。

如果您需要一種方法與片段進行溝通,那麼最好的辦法是實現一個接口,並使用父活動進行溝通。

查看它是如何做的教程here。具體查看「創建事件回調到活動」部分,瞭解它是如何完成的。