前面我已经实现了Activity之间以及基于Fragment的Activity之间的数据传递,现在需要实现的是由同一Activity托管的两个Fragment,及Fragment one 与 Fragment two之间的数据传输。
如图所示:
上图表达了Fragment之间发送和接收数据用到的具体方法.。
先在Activity中获取Fragment One 和 Fragment Two的实例,然后将Fragment One 的 TargetFragment 设置为 Fragment Two,在Fragment One中调用 getTargetFragment.onActivityResult就可以将数据传递给Fragment Two. 然后Fragment Two在onActivityResult方法中解析数据即可。
然后同样将Fragment Two 的 TargetFragment 设置为 Fragment One,在Fragment Two中调用 getTargetFragment.onActivityResult就可以将数据传递给Fragment Two. 然后Fragment Two在onActivityResult方法中解析数据即可。
用一个Activity 绑定两个Fragment 一个在上 一个在下
实现的效果如下:
图一 为未发送消息时刚刚进去的界面.
图二 为Fragment_one 发送了一个 “哈哈,这是one发的消息” 。 在Fragment Two中显示出来了。
图三 为Fragment_two 发送了一个“收到了,我是,two”。 在Fragment one中显示出来了。
代码如下:
Activity的布局代码如下:
<?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" >
<FrameLayout
android:id="@+id/fragment_container_one"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<FrameLayout
android:id="@+id/fragment_container_two"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
</LinearLayout>
Activity的Java代码: