在Android片段中,startActivityForResult()和getActivity().startActivityForResult()之间有什么不同?当onActivityForResult()被称为片段时,其行为差异是什么?
发布于 2017-12-14 07:02:00
startActivityForResult()必须从fragment的onActivityForResult()中处理它。
getActivity().startActivityForResult()必须从activity的onActivityForResult()中处理它。
基本:
如果您在fragment上并且希望在fragment上处理结果,请使用onActivityForResult(),否则如果您想从片段的activity处理它,请使用getActivity.startActivityForResult()
发布于 2017-12-14 07:07:33
startActivityForResult从片段调用容器活动的startActivityForResult。所以对于片段:-
从片段的包含活动调用startActivityForResult(意图,int)。
但是,当您直接在片段中使用它时,可以根据请求code.And进行某些特定的更改--您将在onActivityresult()中得到修改的请求代码,因为我最近在修改请求代码时遇到了一些问题。您可以查看一下This Thread。
发布于 2017-12-14 06:55:57
我们可以在活动中使用startActivityForResult(),在片段中使用getActivity().startActivityForResult()。
简而言之,为了获得活动的上下文,我们在它前面加上了getActiviy()。
相反,我们可以从Actiivty调用特定片段的onActivityResult(),如下所示。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
for (Fragment fragment : getChildFragmentManager().getFragments()) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}如果我们把它说得更详细些,
如果要从片段中调用startActivityForResult(),则requestCode将被拥有该片段的活动所更改。
因此,如果要在活动中获得正确的resultCode,可以尝试如下所示:
不使用: (在这种情况下):
startActivityForResult(intent, 1);使用:
getActivity().startActivityForResult(intent, 1);希望能帮上忙!
https://stackoverflow.com/questions/47807491
复制相似问题