Ответ 1
Предпочтительным методом является использование обратного вызова для получения сигнала от Fragment
. Кроме того, это рекомендуемый метод, предложенный Android в Коммуникация с Activity
В вашем примере в DialogFragment
добавьте интерфейс и зарегистрируйте его.
public static interface OnCompleteListener {
public abstract void onComplete(String time);
}
private OnCompleteListener mListener;
// make sure the Activity implemented it
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
this.mListener = (OnCompleteListener)activity;
}
catch (final ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnCompleteListener");
}
}
Теперь реализуем этот интерфейс в Activity
public class MyActivity extends Activity implements MyDialogFragment.OnCompleteListener {
//...
public void onComplete(String time) {
// After the dialog fragment completes, it calls this callback.
// use the string here
}
}
Теперь в DialogFragment
, когда пользователь нажимает кнопку OK, отправьте это значение обратно в Activity
через ваш обратный вызов.
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
String time = Integer.toString(hourOfDay) + " : " + Integer.toString(minute);
this.mListener.onComplete(time);
}