有沒有什麼辦法可以檢測到DialogFragment被解僱的時候,以便我可以更新其父片段?當dialogfragment被解僱時刷新片段
回答
重寫DialogFragment的onDismiss(),或者在構建底層對話框時,使用setOnDimissListener()設置偵聽器。對付這種
一種方式是一個活動中嵌入您的DialogFragment並顯示活動的對話,有一個在下面的鏈接提示,說明如何:
http://developer.android.com/guide/topics/ui/dialogs.html
您可以使用此更新基礎片段,因爲當對話框(這是一個活動)完成時,將在基礎片段上調用onResume()。添加代碼以更新onResume()方法中片段的狀態,這就是它的全部。
我認爲這是最好的方法,但API 8+呢?這已添加到API 11 – Iree 2015-08-03 17:12:54
我剛剛在我的項目中解決了這個問題。我擁有的是帶有ListFragment的活動。在該列表片段中,當單擊某個特定項目時,我會顯示一個DatePickerFragment(一個顯示DatePickerDialog的自定義DialogFragment)。當選擇一個日期時,我想要刷新ListFragment。
爲了實現這一目標,在承載ListFragment活動(它也承載DatePickerFragment,作爲事實上)我實現了,簡單地用一個新的實例替換ListFragment,像這樣的方法:
public void criteriaChanged()
{
getFragmentManager().beginTransaction()
.replace(R.id.container, new FilterFragment())
.commit();
}
我把這種方法從DatePickerFragment,從onDateSet():
FilterActivity fa = (FilterActivity) getActivity();
fa.criteriaChanged();
這是否把戲對我來說。
您可以添加一個監聽器,並覆蓋您的片段對話的onDismiss:
public class DismissDialog extends DialogFragment {
private DialogInterface.OnDismissListener onDismissListener;
public void setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
if (onDismissListener != null) {
onDismissListener.onDismiss(dialog);
}
}
}
然後,在家長,您可以設置一個監聽器:
DismissDialog d = new DismissDialog();
d.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
d.show(getSupportFragmentManager(), "sometag");
這是正確的答案 – FireZenk 2015-11-18 14:28:09
我試過@Gazer答案,它不適用於我,我正在使用不同的片段類
import android.app.Fragment;
但我得到這個工作
在父片段創建一個接口類
public interface MyDialogListener { void OnCloseDialog(Object obj); //you can put any object here }
實現接口類
public class ActionBarFragment extends Fragment implements MyDialogListener{ @Override public void OnCloseDialog(Object obj) { //Do you refresh }
,然後我添加DialogFragment
public class SpecialDialogFragment extends DialogFragment { MyDialogListener mListener; public SpecialDialogFragment(MyDialogListener listener) { this.mListener = listener; } @Override public void onStop() { super.onStop(); if(mListener!=null) mListener.OnCloseDialog(null); }
內監聽
- 1. Android - 在DialogFragment被解僱時刷新「父」片段
- 2. Android - DialogFragment從片段中顯示。當DialogFragment被解僱時如何從片段中顯示Toast?
- 3. 聽DialogFragment解僱事件從ViewPager片段
- 4. 當對話框片段被解除時刷新其他活動的片段
- 5. 當UIPopover被解僱時的動作
- 6. 當UIViewController被解僱時閃爍
- 7. 當popover被解僱時禁用UIBarButtonItem
- 8. 解僱的div,當所有被解僱的包裝被自動解僱
- 9. 6片段被ViewPager隱藏/顯示而不被解僱
- 10. 刷新片段
- 11. 片段刷新
- 12. 刷新片段
- 13. ViewPager中的片段沒有被刷新
- 14. didEnterRegion有時只被解僱
- 15. 從MainActivity刷新當前片段
- 16. 如何在flipView被解僱後刷新視圖
- 17. 從DialogFragment在片段
- 18. 重新加載時刷新片段
- 19. 如何聆聽DialogFragment解僱事件
- 20. 解僱DialogFragment(不是對話框)onTouchOutside
- 21. Android - 刷新片段
- 22. 片段「刷新」android
- 23. 進度對話框沒有被解僱的片段
- 24. Android對話框片段不會解僱
- 25. UIView通知當模式UIImagePickerController被解僱?
- 26. 片段中的片段不刷新
- 27. onFinishRender不被解僱
- 28. 的UISearchBar被解僱
- 29. viewForAnnotation未被解僱
- 30. 如何刷新片段時移至
這通知'DialogFragment'它已被解僱,但不是它的父母片段,這是問題的問題。 – howettl 2013-09-17 21:57:27
父母可以使用這些方法獲取回調,並在被解僱時作出迴應。查看這個用法的答案:http:// stackoverflow。com/a/29518363/445348 – cottonBallPaws 2015-12-09 21:02:44