首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android片段中的startActivityForResult()与getActivity().startActivityForResult()

Android片段中的startActivityForResult()与getActivity().startActivityForResult()
EN

Stack Overflow用户
提问于 2017-12-14 06:53:30
回答 6查看 1.1K关注 0票数 8

在Android片段中,startActivityForResult()getActivity().startActivityForResult()之间有什么不同?当onActivityForResult()被称为片段时,其行为差异是什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-12-14 07:02:00

startActivityForResult()必须从fragmentonActivityForResult()中处理它。

getActivity().startActivityForResult()必须从activityonActivityForResult()中处理它。

基本:

如果您在fragment上并且希望在fragment上处理结果,请使用onActivityForResult(),否则如果您想从片段的activity处理它,请使用getActivity.startActivityForResult()

票数 4
EN

Stack Overflow用户

发布于 2017-12-14 07:07:33

startActivityForResult从片段调用容器活动的startActivityForResult。所以对于片段:-

从片段的包含活动调用startActivityForResult(意图,int)。

但是,当您直接在片段中使用它时,可以根据请求code.And进行某些特定的更改--您将在onActivityresult()中得到修改的请求代码,因为我最近在修改请求代码时遇到了一些问题。您可以查看一下This Thread

票数 2
EN

Stack Overflow用户

发布于 2017-12-14 06:55:57

我们可以在活动中使用startActivityForResult(),在片段中使用getActivity().startActivityForResult()

简而言之,为了获得活动的上下文,我们在它前面加上了getActiviy()

相反,我们可以从Actiivty调用特定片段的onActivityResult(),如下所示。

代码语言:javascript
复制
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    for (Fragment fragment : getChildFragmentManager().getFragments()) {
        fragment.onActivityResult(requestCode, resultCode, data);
    }
}

如果我们把它说得更详细些,

如果要从片段中调用startActivityForResult(),则requestCode将被拥有该片段的活动所更改。

因此,如果要在活动中获得正确的resultCode,可以尝试如下所示:

不使用: (在这种情况下):

代码语言:javascript
复制
startActivityForResult(intent, 1);

使用:

代码语言:javascript
复制
getActivity().startActivityForResult(intent, 1);

希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47807491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档