关于fragment的传值

前言:

fragment是在Android3.0定义出来的,它和Activity的区别其实在于fragment能够更好的支持界面模块化,例如可以在同一个Activity界面上显示两块fragment,点击左边fragment中的控件去改变右边fragment中的控件。

相对的来说,fragment算是一个抽象的Activity。

fragment可以实现标签切换,当然,要做标签切换效果用Viewpager最好。

正题

fragment传值有两种情况:

1、同一个Activity中不同容器(container)的两个fragment值传递。

2、同一个容器(container)的两个fragment值传递。

传值的方式有很多,但是基于项目中代码应该具有更大的耦合性,因此建议采用广播方式传值。

先以情况2为例:

同一容器中fragment1中定义两个Button(bt1、bt2),fragment2中定义一个TextView(tv),点击不同的Button来改变TextView的值。

fragment1代码:

 1 public class Fragment1 extends Fragment {
 2
 3     private Button bt1;
 4     private Button bt2;
 5
 6
 7     @Override
 8     public View onCreateView(LayoutInflater inflater, ViewGroup container,
 9             Bundle savedInstanceState) {
10         View view = inflater.inflate(R.layout.fragment1, null);
11         bt1 = (Button) view.findViewById(R.id.bt1);
12         bt2 = (Button) view.findViewById(R.id.bt2);
13
14         bt1.setOnClickListener(new MyClickListener());
15         bt2.setOnClickListener(new MyClickListener());
16
17
18         return view;
19     }
20
21     private class MyClickListener implements OnClickListener{
22
23         @Override
24         public void onClick(View v) {
25
26
27             switch(v.getId()){
28             case R.id.bt1:
29                 Intent intent = new Intent();
30                 intent.setAction("123");
31                 LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
32                 break;
33
34             case R.id.bt2:
35                 Intent intent2 = new Intent();
36                 intent2.setAction("321");
37                 LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent2);
38                 break;
39             }
40
41         }
42
43     }
44
45
46 }

fragment2代码:

 1 public class Fragment2 extends Fragment {
 2
 3     private TextView tv;
 4
 5     @Override
 6     public View onCreateView(LayoutInflater inflater, ViewGroup container,
 7             Bundle savedInstanceState) {
 8         View view = inflater.inflate(R.layout.fragment2, null);
 9         tv = (TextView)view.findViewById(R.id.tv);
10
11         return view;
12     }
13
14
15
16
17
18 @Override
19     public void onActivityCreated(Bundle savedInstanceState) {
20     LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(getActivity());
21     IntentFilter filter = new IntentFilter();
22     filter.addAction("123");
23     filter.addAction("321");
24     MyBroadcastReciver myBroadcastReciver = new MyBroadcastReciver();
25     localBroadcastManager.registerReceiver(myBroadcastReciver, filter);
26     super.onActivityCreated(savedInstanceState);
27     }
28
29
30
31     private class MyBroadcastReciver extends BroadcastReceiver{
32
33         @Override
34         public void onReceive(Context context, Intent intent) {
35             String s = intent.getAction();
36             if(s.equals("123")){
37                 tv.setText("111111111");
38             }else if(s.equals("321")){
39                 tv.setText("222222222");
40             }
41
42         }
43
44     }
45
46     @Override
47     public void onDestroy() {
48
49         super.onDestroy();
50     }
51
52 }

此方法中利用不同的Button产生不同的广播,然后再在接收端来String s = intent.getAction(); 再对s的值进行判断做对应处理。

时间: 2024-11-05 08:32:31

关于fragment的传值的相关文章

Android Fragment之间传值

首先来介绍的是我们的默认的布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <fragment a

Fragment之间传值

Activity: String myArguments;    public String getarguments() {   return myArguments;  } public void setarguments(String title) {   this.myArguments = title;  } http://www.cnblogs.com/xiaobo-Linux/ qq463431476 Afragment: ((MainActivity)getActivity())

Android:理解Fragment

最近都在公司搞测试,静不下心来学android.今天就把Fragment搞懂吧. Fragment的几点要点: 1.用于大屏幕平板,容纳更多组件,可复用2.Fragment必须嵌入Activity中 3.Fragment有自己的生命周期,但必须在Activity是run的状态下(毕竟是嵌入在Activity里) Fragment继承体系: Fragment回调方法: onCreate(): 创建Fragment对象时回调 onCreateView() :绘制组件时回调,返回一个View,作为Fr

Fragment总结

/*---------------------------------------- *-描述--Fragment例题总结. *-描述--S1.Fragment的生命周期 * ---Fragment的相关内容 * 1.个Fragment 必须总是被嵌入到一个Activity 中,它的生命周期直接依赖于宿主Activity生命周期 * 2.要创建一个Fragment 必须创建一个Fragment 的子类,或者继承自另一个已经存在的Fragment的子类 * 并重写 onCreate().onCre

处女男学Android(十)---Fragment完结篇之Fragment通信和ListFragment

一.前言 前两篇blog介绍了fragment的基本用法 1.Fragment API简介:如FragmentManager.FragmentTransaction等. 2.定义方式:继承Fragment类并重写onCreat.onCreatView.onPause等. 3.引用方式:通过定义<fragment>标签或者通过FragmentTrasaction实例的add()动态添加Fragment这两种. 4.Fragment回退栈与Fragment生命周期. 关于Fragment剩余的重要

关于TabLayout与ViewPager在Fragment中嵌套Fragment使用或配合使用的思考

注意: 因为继承的是Fragment,所以getSupportFragmentManager()与getFragmentManager()方法无法使用,这里需要用到getChildFragmentManager()方法: (用getFragmentManager()方法并不会报错,但到时候运行的时候会出问题,查了好久才知道这个错误) 统一Fragment类型,要么为"android.support.v4.app.Fragment",要么为"android.app.Fragme

一起学Android之Fragment

概述 本文以一个简单的小例子,简述在Android开发中,Fragment的常见用法,仅供学习分享使用,如有不足之处,还请指正. 什么是Fragment? Fragment代表一个功能或者用户界面的一部分.一个Activity可以由多个Fragment组成多窗格UI,一个Fragment也可以重用在多个Activity中.你可以把Fragment作为Activity的一个模块,它有自己的生命周期,接收自己的 输入事件,当Activity运行时可以动态的添加和删除,类似于‘sub Activity

学习Android之初。

今天开始,要正式系统的学习Android了.我想要看清未来的路.so,我查了很多,这篇博客很对胃口,写的很具体,一目了然.以至于可以预知之后的路. Thanks.从今天开始,也要付出努力了.当下把Android学好,以后工作后学习,前端和服务器端,以及html5和Hadoop.我爱编程,它将伴我一生. 大道三千,何以证道? 最近有私信.邮件给我咨询一些职业生涯规划的同学,我在这里以过来人的身份给大家一些建议. 任何行业,任何职位,无论高低,无论大小,都可以分为广博.精深两个方向. 精深自然指的是

程序员之路:以Android证道

大道三千,何以证道? 最近有私信.邮件给我咨询一些职业生涯规划的同学,我在这里以过来人的身份给大家一些建议. 任何行业,任何职位,无论高低,无论大小,都可以分为广博.精深两个方向. 精深自然指的是在某一领域造诣深厚,当然也不会是对别的技术一无所知,否则就成了独腿人,岂能走得远?广博自然指的是涉及面广,知识丰富,对各种技术都有所涉猎,当然不会是浅尝辄止的接触,所谓的全栈程序员自然属于这一类型,我本身也是这一类型的. 精深 首先说一下精深,作为Android程序员,所必需掌握的基础知识:0. Jav