zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    stmt.executeQuery不执行解决办法
    可变参数
    深度理解JVM
    JDBC 基础入门
    Flask中Mysql数据库的常见操作
    Flask与mysql数据库字段类型的区别以及基本用法
    Flask里面session的基本操作
    Flask里面的cookie的基本操作
    Flask表单(form)的应用
    Flask网页模板的入门
  • 原文地址:https://www.cnblogs.com/wlrhnh/p/5825311.html
Copyright © 2011-2022 走看看