Android 在Fragment中执行onActivityResult不被调用的简单解决方法

在Android开发中,我们经常会用到FragmentActivity下嵌套多个Fragment,但是在开发过程中会发现在嵌套的Fragment中使用onActivityResult回调方法没有被执行。

网上也有很多解决方法,但是说的都比较麻烦,所以今天给大家推荐一种超简单的用法,

在Fragment和FragmentActivity中都要重写onActivityResult方法,并且要保证两者的请求码或者结果码一致。代码如下:

在FragmentActivity中

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch(resultCode){
            case 1://该结果码要与Fragment中的一致
              //我这里使用的是根据结果码获取数据,然后加上下面一句代码,其
              //他的什么都不用做
               super.onActivityResult(requestCode,resultCode,data);
                break;
           case 2:
                super.onActivityResult(requestCode,resultCode,data);
                break;
             ......
        }
    }

在Fragment中

   @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (resultCode){
            case 1://该结果码与FragmentActivity中是保持一致的
                //在这里获取你需要的数据
                break;
            case 2:

                break;

        }
    }

综上所述要解决在Fragment中使用onActivityResult不被调用的问题,只需要做到在Fragment和FragmentActivity中同时重写onActivityResult方法,并且要保证所使用的请求码或者结果码一致就行了。

是不是很简单,有需要的朋友可以参考一下。

时间: 2024-11-10 16:14:06

Android 在Fragment中执行onActivityResult不被调用的简单解决方法的相关文章

android soap webservers 无法执行 报错 ht.call(SOAP_ACTION, envelope);解决方法

1.可能没有加入网络访问权限,在Manifest里面加入,<uses-permission android:name="android.permission.INTERNET"/> 2.版本问题,很可能的问题,因为在android高于9的会出错,所以简单粗暴的办法就是,直接将版本信息 <uses-sdk android:minSdkVersion="?" android:targetSdkVersion="?" /> 删除

谈谈Fragment中的onActivityResult

大家或许有遇到这个神坑,在Fragment中使用startActivityForResult能够成功,可是在Fragment中的onActivityResult却无法被调用.一不注意就让人一夜愁白了头.苦经探索(当然包括亲爱的百度和谷歌),终于总结出了一些规律. 在Fragment中使用startActivityForResult之后,onActivityResult的调用是从activity中开始的(即会先调用activity中的onActivityResult). 一.只嵌套了一层Fragm

Android技术17:Android应用程序中执行二进制命令

Android系统底层为Liunx内核,内核中有大量的可执行的二进制文件,system/bin目录下面,如下图 我们都知道在Linux命令窗口中可以执行上述命令,但是在Android应用程序中是如何调用该命令呢? 1.获取当前Runtime Runtime.getRuntime(); 2.执行命令 例如执行ps 查看进程信息 Process precess=Runtime.getRuntime().exec("ps"); 3.获取内容 InputStream is=precess.ge

Android的Fragment中的互相通信-桥梁activity

Android的Fragment中的互相通信-桥梁activity 效果图如下: 项目结构图如下: Fragment1: package com.demo.fragmenttongxin; import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import an

android在代码中四种设置控件背景颜色的方法(包括RGB)

转载请注明出处: http://blog.csdn.net/fth826595345/article/details/9208771  TextView tText=(TextView) findViewById(R.id.textv_name); //第1种: tText.setTextColor(android.graphics.Color.RED);//系统自带的颜色类 // 第2种: tText.setTextColor(0xffff00ff);//0xffff00ff是int类型的数据

universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法

在listview/gridview中使用UIL来display每个item的图片,当图片数量较多需要滑动滚动时会出现卡顿,而且加载过的图片再次上翻后依然会重复加载(显示设置好的加载中图片) 最近在使用UIL遇到了这个问题,相信这个问题许多使用UIL的人都碰到过 现在把解决方法贴出来给有同样问题的朋友做参考 先看下UIL的工作流程 在已经允许内存,存储卡缓存的前提下,当一个图片被请求display时,首先要判断图片是否缓存在内存中,如果false则尝试从存储卡读取,如果依然不存在最后才从网络地址

android设计的布局在阿拉伯语下界面错乱的解决方法

(1)正在AndroidManifest.xml声明文件的application元素中,增加" android:supportsRtl=true" (2)建] androidの设计的布局在阿拉伯语下界面错乱的解决方法 (1)在AndroidManifest.xml声明文件的元素中,添加" android:supportsRtl=true" (2)修改应用程序中layout的"left/right"布局属性,改为对应的"start/end

执行游戏时出现0xc000007b错误的解决方法

如图,这个错误使无数玩家烦恼. 出现这个错误,可能是硬件的问题,也可能是软件的问题.可是,因为硬件引起该问题的概率非常小,而且除了更换硬件之外没有更好的解决方法,因此本文将具体介绍怎样通过软件解决此问题,这也是大家最关心的. 大致介绍一下这个错误是怎样发生的.这个错误的本意是提示内存错误,可是通常情况下并非内存存在问题,而是因为软件的问题产生了这个错误.到底是什么软件的问题呢?答案是DirectX,而且多数情况下是DirectX 9.0的问题. 或许大家会问了:我玩的游戏都有DirextX 11

jQuery中ajax的使用与缓存问题的解决方法

jQuery中ajax的使用与缓存问题的解决方法 1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的) 防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之就是使每次访问的URL字符串不一样的] 设计WEB页面的时候 也应该遵守这个