google 从3.0開始就引入了 Fragment 概念,用 Fragment 取代多 Activity,假设你还停留在 Activity 时代,那你就面壁去吧!
Fragment 是好用,可是又几个问题,
1.在 ViewPager 里面,你不知道 Fragment 当前是显示还是隐藏状态,就是少了一个 onShow onHide 回调
2.就是本客题,显示一个 DialogFragment 回调问题,
举个场景,删除一个文件。用 DialogFragment 弹出用户选择,你怎么知道用户确定了还是取消了,而且你不知道这个 DialogFragment 何时消失了,由于没有触发不论什么UI 事件,你就不知道要刷新列表,
然而,我知道,仅仅要我有问题,上 stackoverflow 这里一定能够搜到答案
http://stackoverflow.com/questions/13733304/callback-to-a-fragment-from-a-dialogfragment
这问题就是了
原理:
Fragment 有
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
回调,当你在 Fragment 里调用 getParentFragment().onActivityResult() 就能够收到回调,细致想想。这事实上就一个函数调用,没经过系统处理,。。
stackoverflow 上讲的这个样例更合理,使用
dialogFrag.setTargetFragment(this, DIALOG_FRAGMENT);
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, getActivity().getIntent());
组合。更加合理