我有一個DialogFragment創建DatePickerDialog。我正在使用名爲newInstance
的靜態方法來設置初始值,以便使用默認的空構造函數。但是,我該如何設置聽衆?在屏幕旋轉後,當點擊「完成」按鈕時,監聽器不會執行任何操作,因爲它不存在。DialogFragment - 屏幕旋轉後保留偵聽器
public class DatePickerFragment extends DialogFragment {
public static final String ARG_YEAR = "year";
public static final String ARG_MONTH = "month";
public static final String ARG_DAY = "day";
private OnDateSetListener listener_;
public static DatePickerFragment newInstance(OnDateSetListener listener, int year, int month, int day) {
final DatePickerFragment date_picker = new DatePickerFragment();
date_picker.setListener(listener);
final Bundle arguments = new Bundle();
arguments.putInt(ARG_YEAR, year);
arguments.putInt(ARG_MONTH, month);
arguments.putInt(ARG_DAY, day);
date_picker.setArguments(arguments);
return date_picker;
}
private void setListener(OnDateSetListener listener) {
listener_ = listener;
}
@Override
public Dialog onCreateDialog(Bundle saved_instance_state) {
final Bundle arguments = getArguments();
final int year = arguments.getInt(ARG_YEAR);
final int month = arguments.getInt(ARG_MONTH);
final int day = arguments.getInt(ARG_DAY);
return new DatePickerDialog(getActivity(), listener_, year, month, day);
}
}
的最佳解決方案!它工作完美無瑕。謝謝你,@Luksprog。 –
正確的解決方案:) –
+1,同樣爲了澄清,重要的是使用對話框片段的標籤重新應用偵聽器。這個標籤是在對話框片段show的方法的第二個參數中指定的。 – rekaszeru