在Fragment中OnActivityResult方法中接收Activity中返回的值

在Fragment中OnActivityResult方法中接收Activity中返回的值

在Fragment中OnActivityResult方法中接收Activity中返回的值,有需要的朋友可以参考下。

在开发android中,有些人往往很疑惑,当一个FragmentActivity中有多个碎片的时候,如a,b,c三个碎片,
其中b中进行了操作,跳转到了新的界面Dactivity)。但是当D操作完后,返回值到碎片b。那么问题就来了,肯定会有人问,b是一个碎片,如何才能接收到D传过来的值呢?

第一步:
我们要在父类的FragmentActivity中进行一步操作:

public class MyFragmentActivity extends FragmentActivity{
    public FragmentTransaction mFragmentTransaction;
    public FragmentManager fragmentManager;
    public String curFragmentTag = "";

...
/*在fragment的管理类中,我们要实现这部操作,而他的主要作用是,当D这个activity回传数据到
这里碎片管理器下面的fragnment中时,往往会经过这个管理器中的onActivityResult的方法。*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        /*在这里,我们通过碎片管理器中的Tag,就是每个碎片的名称,来获取对应的fragment*/
        Fragment f = fragmentManager.findFragmentByTag(curFragmentTag);
        /*然后在碎片中调用重写的onActivityResult方法*/
        f.onActivityResult(requestCode, resultCode, data);
    }
...
}

第二步:比如,在c碎片中(fragment),我们要进行的操作:
A:对了,这里需要注意下:在实际开发中,往往会出现在子的fragment中,还会去管理下一层的多个碎片的管理,对于这种比较复杂的碎片管理传值又需怎样做呢?其实做法还是和上面一样的

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Fragment f = fragmentManager.findFragmentByTag(curFragmentTag);
        f.onActivityResult(requestCode, resultCode, data);
    }

B:好的,终于进入主题了,到最终的b(fragment)接收传过来的数据了。那我就直接上代码了:

public class b extends Fragment{ 

***
@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case 1:
            if (resultCode != Activity.RESULT_OK) {
                return;
            }
            break;

        default:
            break;
        }

    }
***
}

好吧,讲了这么多,虽说我的表达还是欠佳,但是,相信大家应该能了解如何传值了吧,至于最后的activtiy中如何做,相必大伙都清楚。

时间: 2024-10-08 03:39:23

在Fragment中OnActivityResult方法中接收Activity中返回的值的相关文章

当在Fragment中使用startActivityForResult()方法打开一个Activity,但是这个Fragment的onActivityResult方法不执行

注意Fragment使用startActivityForResult()方法打开一个Activity,并需要这个Activity销毁时通过onActivityResult()传递数据给打开他的Fragment.一般是没有问题的,但是如果这个Fragment依附的那个FragmentActivity也重写了onActivityResult()方法,那么这个Fragment的onActivityResult()方法就获取不到数据了(被那个依附的FragmentActivity接受了),这时候我们只需

Android踩坑随笔Fragment中onActivityResult方法不被调用

最近项目里要做头像功能,参考了这篇博客(GitHub - zhudfly/SelectAvatarApplication: 一个选择并显示头像圆形控件,可以通过拍照或者选择相册中的图片来设置图片),但是在使用过程中出现拍照无响应,几经查找,原因是在Fragment中覆写onActivityResult()方法的同时,必须要在他父类FragmentActivity中再次覆写onActivityResult()才能使接收到返回数据(比如拍照返回). 第一步:在该Fragment父类的Fragment

如何将BroadcastReceiver中的信息传到Activity中

方法:在BroadcastReceiver中定义一个接口,在Activity中定义一个BroadcastReceiver的对象,采用动态注册,在Activity中定义接口中的方法并通过BroadcastReceiver对象调用该方法,具体代码如下: 自定义BroadcastReceiver: import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent

Action中动态方法的调用 Action中通配符的使用 Result的配置

   Action中动态方法的调用 动态方法调用(Dynamic Method Invocation,DMI) 标识符:! 一.通过以下选中的文件来查看是否禁止调用动态方法 二.在我们自定义的action类中,我们不再单一的继承来自父类的方法,我们可以自定义自己的方法 1 package cn.jbit.booklist; 2 3 import com.opensymphony.xwork2.ActionSupport; 4 5 public class BookList extends Act

Fragment中的方法findFragmentById(int id)的返回值探讨

在学习<Android编程权威指南>P124页的时候,遇到了这样的代码: 引起了我的疑问if的判断条件是(fragment==null),那执行完上一句 Fragment Fragment=fm.findFragmentById(R.id.fragmentContainer); fragment的值到底是什么呢?通过debug,我发现其实执行完 Fragment fragment=fm.findFragmentById(R.id.fragmentContainer):fragment的值就是n

vue给methods中的方法传入当前点击行的值

<template> <!-- 在template中,只能存在一个根组件 --> <div class="event"> <ul> <li v-on:click="getName(name,index,$event)" v-for='(name,index) in names'>{{name}}</li> </ul> <input type="text" v

android中使用intent来实现Activity带数据跳转

大家都知道startActivity()是用来切换跳转Activity的.如果想要在另个Activity中出书数据的话.只需要在源activity中使用intent.putExtra()方法传出数据.在对应activity中使用intent.get**Extra()方法接收数据就行了 那么startActivityForResult()方法呢.它也是用来带数据跳转activity的.可是这两个方法具体有什么区别呢? 这就要说说带数据跳转的方向了. 第一个方法只能把数据发送过去.可是如果子acti

android开发之Fragment加载到一个Activity中

Fragments 是android3.0以后添加的.主要是为了方便android平板端的开发.方便适应不同大小的屏幕.此代码是为了最简单的Fragment的使用,往一个Activity中添加Fragment,主要涉及的知识点有:1.Fragment类的创建,2.Fragment的添加3.无UI的 Fragment的添加,根据Tag找回Fragment Fragment对应的Xml布局文件, <LinearLayout xmlns:android="http://schemas.andro

Handler中post方法的调用流程和使用场景

最近一直在学习多线程,handler的作用真的很重要啊,所以保存这篇看的蛮懂的. Handler mHandler = new Handler(); mHandler.post(new Runnable() { @Override public void run() { showContentView(contentView); } }); 下面我们先来看一下这个方法是怎么执行的 首先: public final boolean post(Runnable r) { return sendMes