android-----Fragment之间的通信

上一篇介绍了Fragment的生命周期,大致了解了Fragment的生命周期与其所绑定的Activity有密切的关系,这一篇我们学习下Fragment之间的通信;

话不多说,通过实例来学习:

定义两个Fragment,让他们显示在同一Activity中,注意只有两个Fragment处于同一个Activity中的时候才会涉及到他们之间的通信

fragment1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffff00">
    <Button
        android:id="@+id/btfragment1"
        android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:text="获得Fragment的EditText值"
        />
    <TextView
        android:id="@+id/tvfragment1"
        android:layout_width="wrap_content"
    	android:layout_height="wrap_content"/>
</LinearLayout>

fragment2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#00ff00">
    <EditText
        android:id="@+id/etfragment2"
        android:layout_width="wrap_content"
    	android:layout_height="wrap_content"/>
</LinearLayout>

Fragment1.java

public class Fragment1 extends Fragment{
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		return inflater.inflate(R.layout.fragment1,container,false);
	}

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);
		Button button = (Button)getActivity().findViewById(R.id.btfragment1);
		button.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				EditText et = (EditText)getActivity().findViewById(R.id.etfragment2);
				TextView tv = (TextView)getActivity().findViewById(R.id.tvfragment1);
				tv.setText(et.getText());//从Fragment2的EditText里面获取到值显示在Fragment1的TextView里面
			}
		});
	}
}

Fragment2.java

public class Fragment2 extends Fragment{
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		return inflater.inflate(R.layout.fragment2,container,false);
	}
}

用于显示Fragment的布局文件:fragment_communicate.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <fragment
        android:name="com.hzw.programmingtest.Fragment1"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1"/>
    <fragment
        android:name="com.hzw.programmingtest.Fragment2"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1"/>
</LinearLayout>

用于显示布局文件的Activity:

public class CommunicateActivity extends FragmentActivity{
	@Override
	protected void onCreate(Bundle arg0) {
		super.onCreate(arg0);
		setContentView(R.layout.fragment_communicate);
	}
}

程序运行结果:

时间: 2024-10-13 23:19:03

android-----Fragment之间的通信的相关文章

[转][译][Android基础]Android Fragment之间的通信

2014-2-14 本篇文章翻译自Android官方的培训教程,我也是初学者,觉得官方的Training才是最好的学习材料,所以边学边翻译,有翻译不好的地方,请大家指正. 如果我们在开发过程中为了重用Fragment这个UI组件,那么我们应该把Fragment设计成是“自包含”.“模块化”组件,这种组件定义自己的布局和行为.一旦我们成功定义了这样的可重用的Fragment,我们就可以将他们与Activity进行关联,然后与整个Application进行整体的UI组装. 我们经常需要一个Fragm

Fragment的生命周期&amp;同一Activity下不同Fragment之间的通信

Android开发:碎片Fragment完全解析(2) Fragment的生命周期 和Activity一样,Fragment也有自己的生命周期,理解Fragment的生命周期非常重要,我们通过代码的方式来瞧一瞧Fragment的生命周期是什么样的: 1 publicclass Fragment1 extends Fragment { 2 publicstaticfinal String TAG = "Fragment1"; 3 @Override 4 public View onCre

使用Broadcast实现android组件之间的通信

android组件之间的通信有多种实现方式.Broadcast就是当中一种. 在activity和fragment之间的通信,broadcast用的很多其它本文以一个activity为例. 效果如图: 布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro

搭建Activity与Fragment,Fragment与Fragment之间的通信架构

内心独白:  曾几何时但凡听到架构之两个字,总能联想到老子说的一句话:"玄之又玄,众妙之门".说不清,道不明.就像是看不见,摸不着,但又真实存在的东西给我们的那种感觉. 回顾人类的历史,繁重的劳动让我们意识到工具的必要性和重要性,并学会了去发明和使用工具.当我进行了大量的,甚至是繁重的编程之后,也开始重新意识到架构的必要性和重要性.当然软件工程发展了这么多年,构架与模式之类的东西前辈们早就说过并且践行与呼吁过,并且也留下了很多值得我们学习和研究的构架模式.但于我个人而言,在没有经历过痛

两个简单Fragment之间的通信

现在我要做个Fragment与Fragment之间的通信小demo. 建立两个Fragment,然后各添加1个按钮和1个TextView. 单击Fragment1的按钮修改Fragment2里的TextView文本. 相同的,单击Fragment2里面的按钮修改Fragment1的TextView文本. 前期准备:在Activity里面放进两个fragment: 1和2,再为其各绑定View. public class Fragment1 extends Fragment { public Vi

Android - Fragment (三)不同Fragment之间的通信

在Fragment的java文件中,可以使用getActivity()来获得调用它的activity, 然后再找到另一个Fragment,进行通信 getActivity().getFragmentManager().findFragmentById(R.id.fragment_list); 但这样做耦合度太高,不方便后续的修改操作 Fragment与其附着的Activity之间的通信,都应该由Activity来完成 不能是多个Fragment之间直接通信 Fragment与其附着的Activi

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

Python服务器与多种客户端(Python/Java/Android)之间的通信

概述: 我们不会一直满足于客户端程序的开发,因为太过受限了.为了打破这样的受限,你需要做的就是去编写服务器端代码.以及如何在服务器与客户端之间的通信.以下将对此以Python为服务器,并分别以Python.Java.Android为客户端作一个简单的介绍. 服务器端: test_tcp_server.py #!/usr/bin/env python from socket import * from time import ctime HOST = '' PORT = 21567 BUFSIZ

Activity与Fragment之间的通信

有时候我们需要在fragment与Activity之间通信,下面简单的总结下. 首先贴一个结果吧.在输入框中输入信息-->按钮-->弹出消息toast 分两部分: Activity——>Fragment 在Activity中创建Bundle数据包,并且调用Fragment的setArguments(Bundle bundle). FragmentActivity.java fragment.java  Fragment——>Activity 需要在Fragment中定义一个内部回调

11Communicating with Other Fragments(Fragment之间的通信)

In order to reuse the Fragment UI components, you should build each as a completely self-contained, modular component that defines its own layout and behavior. Once you have defined these reusable Fragments, you can associate them with an Activity an