Fragment的startActivityForResult和Activity的startActivityForResult的区别

2016-08-30 18:22:33

前提:我们的APP要兼容Api level 11以前的,所以必须用FragmentActivity

1、对于Fragment的,我们很多时候都会在Activity中通过如下方式使用:

Fragment是Android3.0以后才引入的东西,为了向下兼容,在support v4包中加入了FragmentActivity,FragmentActivity和Activity的区别是:FragmentActivity中只能使用getSupportFragmentManager(),而Activity中可以直接使用getFragmentManager();

2、具体看看Fragment中调用startActivityForResult()和mActivity.startActivityForResult()的区别(mActivity是一个FragmentActivity对象):

代码来自support-v4:23.2.1,因为不同的support包中,该方法的实现不太一样,这里的源码分析以23.2.1为准。

1处的代码,要求我们传入的requestCode必须小于2^16;

2处调用了另外一个方法,注意看3处的代码,此处将调用startActivityForResult方法的fragment缓存起来,对应的key就是requestIndex,mPendingFragmentActivityResults是一个SparseArrayCompat<String>对象。

3、onActivityResult方法

看代码可以发现,取出缓存中的Fragment,然后调用该Fragment的onActivityResult()方法。注意看这个方法的注释,分发收到的result给对应的Fragment。

时间: 2024-08-27 13:32:08

Fragment的startActivityForResult和Activity的startActivityForResult的区别的相关文章

Activity使用startActivityForResult时出现onActivityResult()不执行的问题

通过使用 startActivityForResult() 和 onActivityResult() 方法可以在Activity之间传递或接收参数.但有时候我们会遭遇onActivityResult()不执行的情况, 第一种情况就是在执行startActivityForResult的时候紧跟着onActivityResult()方法也被执行,我们打log就会发现在onActivityResult()方法中resultCode参数一直返回0,出现这种情况就是跟我们的Activity加载模式有关的,

Android Activity 调用startActivityForResult之后被销毁?

Android Activity 调用startActivityForResult之后调用的Activity被销毁的问题 最近在华为的手机上面发现Activity调用startActivityForResult后返回结果时,调用的Activity都会被重新创建,也就是Activity被销毁了. 在网上经过一番查找,发现有哥们说在手机开发人员选项里面有这么一项"不保留活动"被勾上了, 一看还真是. 把那个勾去掉一切又恢复正常了.

[转]Fragment跳转至Activity或者Fragment

1.Fragment跳转至Activity 从fragment中跳转和从activity中跳转类似,只不过你要先通过fragment的getActivity方法获取到显示这个fragment的activity,具体代码是这样的: Button button = view.findViewById(xxx); button.setOnClickListener(new View.OnClickListener(     onClick(View view) {         startActiv

Android系列之Fragment(一)----Fragment加载到Activity当中

Android系列之Fragment(一)----Fragment加载到Activity当中 ?[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3978989.html 联系方式:[email protected] [正文] Android上的界面展示都是通过Activity实现的,Activity实在是太常用了.但是Activity也有它的局限性

Fragment not attached to Activity

当我点击返回按钮,返回桌面的时候,就会报错,Fragment not attached to Activity这个错误,看logcat里是因为 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.battery_full);是因为用到了getResources()这个方法, 原因是这样的Fragment在Activity中加载前就调用了或者是在Activity消失后继续调用getResources()方法

调用startActivityForResult启动activity,返回当前页不响应的问题(附带activity携带参数流程)

最近在项目遇到这样一个问题,原始的activity不是为我写,后面我要改成返回activity携带参数.我改好了之后 发现不能调用onActivityResult.调试也没有问题,activity结束时候我也是用finish函数的.这样的话,不细心就不会查到Manifest 配置activity语句上.下面说说不响应的问题. 一.Manifest 配置的启动方式有关 activity跟 Manifest 配置的启动方式有关,不要配置启动方式:android:launchMode="singleT

Fragment not attached to Activity 异常

1.关于Fragment(XXFragment) not attached to Activity 异常.出现该异常,是因为Fragment的还没有Attach到Activity时,调用了如getResource()等,需要上下文Content的函数.解决方法,就是等将调用的代码写在OnStart()中.网上还有几处这样的参考:http://stackoverflow.com/questions/10919240/fragment-myfragment-not-attached-to-activ

Fragment(9)FragmentActivity和Activity的区别

getSupportFragmentManager()  ,FragmentActivity用在android sdk 3以下. getFragmentManager() + Activity 用在android sdk 3以上. stackoverflow的原文 A FragmentActivity is a subclass of Activity that was built for the Android Support Package. The FragmentActivity cla

(转)Fragment、FragmentActivity与Activity的关系

总结: 1.FragmentActivity继承自Activity,用来解决3.0(API:11)之前没有fragment的兼容性问题,所以在使用的时候需要导入v4 support包,同时继承FragmentActivity,这样在Activity中就能嵌入Fragment来实现布局效果 2.当然3.0之后就可以直接继承自Activity,直接使用Fragment 3.获得FragmentManager的写法是不同的.3.0以下:getSupportFragmentManager()  ,3.0