Fragment.setTargetFragment()
Use case = 2 fragments hosted by the same activity.
Where startActivityForResult() establishes a relationship between 2 activities, setTargetFragment() defines the caller/called relationship between 2 fragments.
setTargetFragment(target) lets the "called" fragment know where to send the result. onActivityResult() is called manually in this case.
public class Caller extends Fragment
Fragment called = Called.newInstance()
called.setTargetFragment(this)
public class Called extends DialogFragment
intent = amazingData
getTargetFragment().onActivityResult( getTargetRequestCode(),,intent )
简而言之,假设Fragment A 跳转B 在B中做一些操作之后,想把这些操作回传给A
Fragment中存在startActivityForResult()以及onActivityResult()方法,但没有setResult()方法,用于设置返回的intent,这样我们就需要通过调用getActivity().setResult(ListTitleFragment.REQUEST_DETAIL, intent);。
这种方法无形当中增加了两个Fragment 与 Activity的耦合度
所以,就有了setTargetFragment()方法
在启动B的时候,可以调用 B.setTargetFragment(A,int t) 将AB关联起来,
然后在B的代码中调用
getTargetFragment().onActivityResult()将数据回传给 A