2015-02-09 70 views
0

我在我的片段活動中獲取DatePickerFragment的信息時出現問題。 我有這樣的代碼,從谷歌的開發者頁面提取:在片段活動上調用onDateSet

public class DatePickerFragment extends DialogFragment { 

@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); 
    ADD add = new ADD(); 
    // Create a new instance of DatePickerDialog and return it 
    return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener) add.getTargetFragment(), year, month, day); 
}} 

這裏是我的MainActivity,當我收到由用戶選擇的日期:

public class ADD extends Fragment implements AdapterView.OnItemSelectedListener, DatePickerDialog.OnDateSetListener { 
//code 
@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
    Log.w("DatePicker", "Date = " + year); 
    mDateDisplay.setText(
      new StringBuilder() 
        // Month is 0 based so add 1 
        .append(dayOfMonth).append("-") 
        .append(monthOfYear + 1).append("-") 
        .append(year).append(" ")); 
}} 

我appologize,如果這個問題已經之前問過。我一直在積極搜索這個頁面,這個問題只針對活動,而不是針對片段。另外,我必須指出,我不是Java專家。我的直覺告訴我,問題可能出在DatePickerFragment的「返回」上,但我無法解決問題。

回答

0

你可能忘了觸發ADD片段內setTargetFragment方法:

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(), (DatePickerDialog.OnDateSetListener) getTargetFragment(), year, month, day); 
+0

這就是問題所在:

DatePickerFragment datePickerFragment = new DatePickerFragment(); datePickerFragment.setTargetFragment(this, 1234); datePickerFragment.show(getChildFragmentManager(), "DatePickerFragment TAG"); 

此外代之以onCreateDialog方法!謝謝! – zakum 2015-02-10 16:56:54