2 qq 23386067 qq_23386067 于 2016.02.16 16:56 提问

当Fragment视图存在时,FragmentActivity如何传值,Fragment如何接收值?求实例

当Fragment视图存在时,FragmentActivity如何传值,Fragment如何接收值?求实例

6个回答

bdmh
bdmh   Ds   Rxr 2016.02.16 17:05

很多方法,handler或者发送广播都可以

wen_wxpk
wen_wxpk 回复qq_23386067: 楼上正解,个人觉得用回调更好
2 年多之前 回复
qq_23386067
qq_23386067 谢谢
2 年多之前 回复
Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.16 21:09

使用eventbus进行通讯

simpleGW
simpleGW   2016.02.17 03:52

1.Fragment是依托于Activity的所以
2.在Fragment的生命周期方法中可以调用getActivity();方法
3.通过此方法获得当前Fragment所依托的Activity的对象
4.既然Activity的对象都获得了那么其中的数据不就也能获得了么

比如:
Activity中:
public class MyActivity extend Fragment Activity{

private List data;
@override
public void onCreate(){
data = new List ;
}
//添加此方法为了在Fragment中获得Activity中数据
public List getData(){
return data;
}
}

Fragment 中:
public class MyFragment extend Fragment{

@override
public view onCreatView(){
        //在生命周期中首先获得依托的Activity的对象
        Activity activity=getActivity();
        List<String> data = activity.getData();
        //现在获得的数据不就是Activity中传过来的么
}

}

simpleGW
simpleGW   2016.02.17 03:51

1.Fragment是依托于Activity的所以
2.在Fragment的生命周期方法中可以调用getActivity();方法
3.通过此方法获得当前Fragment所依托的Activity的对象
4.既然Activity的对象都获得了那么其中的数据不就也能获得了么

比如:
Activity中:
public class MyActivity extend Fragment Activity{

private List data;
@override
public void onCreate(){
data = new List ;
}
//添加此方法为了在Fragment中获得Activity中数据
public List getData(){
return data;
}
}

Fragment 中:
public class MyFragment extend Fragment{

@override
public view onCreatView(){
        //在生命周期中首先获得依托的Activity的对象
        Activity activity=getActivity();
        List<String> data = activity.getData();
        //现在获得的数据不就是Activity中传过来的么
}

}

zp0119
zp0119   2016.02.17 11:08

fragment 的数据传递分为两种情况

1.在activity中给fragment传递数据:
在activity中传递数据,在fragment中接收数据并显示出来:
把fragment作为一个普通的对象,调用它的方法,把数据传递过去.

2.在fragment中给activity传递数据:
把activity作为一个普通的对象,调用它的方法,把数据传递过去
#第一种情况代码实现
**传递数据

//响应提交按钮的点击事件
public void submit(View v){
    // 1.从输入框中取出数据
    String data = et_data.getText().toString();
    // 2.传递给fragment
    // 把fragment作为一个普通的对象,调用它的方法,把数据传递过去
    f01.getData(data);

}

**接收数据

/**

  • 接收activity传递过来的数据,并显示出来
  • @param data */ public void getData(String data){ tv_data.setText(data); }

#第二种情况的代码实现
注意:在fragment 中的布局文件中 onClick 属性是不起作用的,它只在activity中能使用
fragment 中对于按钮只能使用按钮的点击事件的监听
**传递数据

btn_info.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // 1.从输入框中取出数据
            String info = et_info.getText().toString();
            // 2.传递给activity
            // 把activity作为一个普通的对象,调用它的方法,把数据传递过去
            // getActivity 得到fragment01所运行在的activity对象
            FragmentActivity activity = getActivity();
            if(activity instanceof MainActivity){
                //做一次强制类型转换
                MainActivity mainActivity = (MainActivity)activity;
                // 把activity作为一个普通的对象,调用它的方法,把数据传递过去
                mainActivity.getInfo(info);
            }
        }
    });

**接收数据

public void getInfo(String info){
//接受fragment传递过来的数据显示在输入框中
et_data.setText(info);
}

crazy1235
crazy1235   Ds   Rxr 2016.02.18 10:40

建议通过回调接口进行传值。

activity向frament传值直接通过findFragmentById获取实例,然后调用fragment里的方法即可。


  articleFragment = (ArticleFragment) fragmentManager.findFragmentByTag(TAG_ARTICLE);
        if (articleFragment != null) {
            articleFragment.updateArticleView(item);
        } 

fragment向activity传值通过回调接口。activity中实现fragment的接口。在fragment里面回调即可。


 @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnChangeArticleListener) {
            mListener = (OnChangeArticleListener) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement OnChangeArticleListener");
        }
    }


        。。。

        holder.mView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (null != mListener) {
                    // Notify the active callbacks interface (the activity, if the
                    // fragment is attached to one) that an item has been selected.
                    mListener.onChangeArticle(holder.mItem);
                }
            }
        });

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
通过intent和bundle来进行Activity和Fragment的数据传递
是这样的,一个登陆的界面Activity传递数据给主Activity,然后主Activity镶嵌了一个Fragment,数据要在Fragment中显示。 Activity A ------>Activity B ------>Fragment Activity A:Intent intent = new Intent(getApplication(), MainActivity.class);
Android进阶之Fragment与Activity之间的数据交互
1概念1 为什么因为Fragment和Activity一样是具有生命周期,不是一般的bean通过构造函数传值,会造成异常。2 参考链接Activity和Fragment传递数据的两种方式【Fragment精深系列4】Fragment与Activity之间的数据交互2 Activity把值传递给Fragment2.1 第一种方式,也是最常用的方式,就是使用Bundle来传递参数(1)宿主Activit
利用Bundle完成Activity向Fragment传值
Activity向Fragment传值也比较简单,把你要传递的值通过put×××传递进Bundle中,然后调用Fragment的setArguments把要传递的Bundle装载进去,这里数据可以是String int,或者是序列化的一个对象值,然后在接收方,调用bundle的get×××得到后,简单解析处理即可,下面我贴上一个传递对象的实例 传递数据的Activity中 Hear
详解Fragment的传值问题
Fragment,碎片,是Android 3.0之后加入的一个非常重要的概念。每个Fragment都有相应的Activity对它进行托管。一个Activity中可以有多个Fragment,这很自然的给大屏幕的适配提供了很便捷的方案。现在大家在开发中都必不可上的用上Fragment。本文总结了Fragment在不同情况下的传值方法,包括不同Activity下的Fragment的传值,相同Acitvi
Fragment跳转时传递参数及结果回传的方法
前言:不知不觉工作已经八个月了,深感没学到什么东西啊,今年要努力了。但以后真的会用到android技术吗,根本回答不了这个问题,只能说,它是一个在任何事情都不成功的情况下,保命的根本而已,但技术还是要深通的。利用这两年时间把android搞精搞透。加油吧,少年今天总结一下Fragment间的参数传递及结果返回的方法。效果图:1、点击“加载第二个Fragment按钮”,加载出第二个Fragment,
Activity向Fragment中传递参数
Fragment 与 Activity之间传递数据有两种方法,一种是使用setArgument,一种是使用接口回调。下面先学习第一种方法。 (1)使用setArgument方法: 为了便于理解,我在这里打个比喻:假如Activity是皇帝,它设立了三个部门(如三省六部),分别是Fragment1,Fragment2和Fragemnt3; 现在他现在要吩咐部门Fragment1去做一些事情
深入分析:Fragment与Activity交互的几种方式(二,使用Bundle)
首先我们需要在Activity中添加Fragment
Fragment向另一个Activity传值
Fragment中    Intent intent = new Intent(getActivity().getApplicationContext(), WeiZhangActivity.class);                 Bundle b = new Bundle();                 b.putString("carid", 141+"");      
android开发——Fragment跳转activity(带返回值)
首先阐述下博文的背景:最近在做一个项目的工程中需要实现这样一个效果:就是一个登陆成功后刷新视图的效果。简单讲就是,一个Afragment它是依附在Aactivity上的,那么现在要从Afragment跳到Bactivity再从Bactivity跳到Cactivity中登陆成功后刷新Afragment。就是这样一个需求。 现在简单实现一个: Afragment绑定在Aactivity上就不说了。
Fragment之间Bundle传值
package com.example.fragment39a; import com.example.fragment39a.BookListFragment.Callbacks; import android.os.Bundle; import android.app.Activity; import android.support.v4.app.FragmentAct