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

问题描述

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

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

解决方案

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

解决方案二:

使用eventbus进行通讯

解决方案三:

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中传过来的么
}

}

解决方案四:

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中传过来的么
}

}

解决方案五:

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);
}

解决方案六:

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

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);
                }
            }
        });

时间: 2024-11-16 00:17:19

fragmentactivity-当Fragment视图存在时,FragmentActivity如何传值,Fragment如何接收值?求实例的相关文章

PHP页面输出时js设置input框的选中值_php实例

关于php页面输出时js设置input框的选中值的代码如下所示: /* 设置表单的值 */ function setValue(name, value) { var first = name.substr(0, 1), input, i = 0, val; if (value === "") return; if ("#" === first || "." === first) { input = $(name); } else { input

Android中Fragment多层嵌套时onActivityResult无法正确回调问题的解决方法_Android

前言: Fragment也可以使用startActivityForResult方法去打开一个Activity,然后在其onActivityResult方法中处理结果,可是当Fragment嵌套的时候,由于FragmentActivity的BUG导致只会回调最外那层Fragment的onActivityResult方法,于是乎当前Fragment就收不到结果了. BUG分析: 解决这个问题之前我们先通过源码分析一下是什么原因导致的,以22.2.1版本的support-v4库为例 我们先从Fragm

MVC中使用Knockout,json获取数据成功后,遍历填充视图模型时,代码不执行怎么回事

问题描述 MVC中使用Knockout,json获取数据成功后,遍历填充视图模型时,代码不执行怎么回事 function AppViewModel() { var self = this; self.brandstandards = ko.observableArray(); self.cart = ko.observableArray(); self.orders = ko.observableArray(); function BrandStandardViewModel(firstself

android-点击按钮改变一个 fragment 视图

问题描述 点击按钮改变一个 fragment 视图 我想通过点击按钮来改变一个fragment视图 public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub if (container == null) { return null; } LinearLayout

getview-android Fragment 使用adapter时getView 方法不执行,在Activity下可以执行

问题描述 android Fragment 使用adapter时getView 方法不执行,在Activity下可以执行 在网上也看了很多相关文章了,还是没有解决,在Activity下使用此代码没有任何问题,数据可以显示,但是用了Fragment adapter的getView方法就一直不执行. 我觉得他们之间唯一的区别的就是context 和view 的不同,请大神指教 代码如下 public class BookSearchActivity extends Fragment { privat

android-隐藏和显示 Fragment 时显示错误的 fragment

问题描述 隐藏和显示 Fragment 时显示错误的 fragment 第一次我把程序中的fragments的可见性改变了, fragment显示的不是我设置的.My layout: <LinearLayout xmlns:android=""http://schemas.android.com/apk/res/android"" xmlns:tools=""http://schemas.android.com/tools"&qu

Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信

以下内容为原创,转载请注明:http://www.cnblogs.com/tiantianbyconan/p/3364728.html 我前两天写过一篇博客<Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信>(http://www.cnblogs.com/tiantianbyconan/p/3360938.html),实现了Tab切换时保留当前Fragment状态,并在切换前自动回调onPause()方法,在切

Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信

以下内容为原创,转载请注明:http://www.cnblogs.com/tiantianbyconan/p/3360938.html 如新浪微博下面的标签切换功能,我以前也写过一篇博文(http://www.cnblogs.com/tiantianbyconan/archive/2012/02/24/2366237.html),可以实现,用的是TabHost.但是android发展比较迅速,TabHost这玩意现在已经被弃用了,虽说用现在也能用,但是被弃用的东西还是少用为妙. 官方有个Frag

使用viewpager,fragment底栏导航,新的fragment替换旧的fragment

问题描述 使用viewpager,fragment底栏导航,新的fragment替换旧的fragment 主activity public class MyActivity extends FragmentActivity { private ViewPager mViewPager; private IconTabPageIndicator mIndicator; List<BaseFragment> fragments; Button LoginButton; LayoutInflater