Android Fragment与Fragment之间数据获取
2014-06-11 12:09
393 查看
上一篇介绍了,Fragment从Activity获取数据。这篇介绍两个Fragment之间的如何获取数据。
MainActivity包含有两个Fragment,LeftFragment和RightFragment,如果Leftfragment想要获取RightFragment中的数据,那么首先要通过FragmentManager获取的RightFragment的实例,然后获取到RightFragment的布局View,然后就可以通过View获取其EditText输入的值。右侧获取左侧的值也是相同原理。
实现效果:
点击右侧Fragment中的按钮,获取到了左侧Fragment EditText中的数值,然后通过吐司显示出来。
源代码:
布局文件:
activity_main:
left.xml:
right.xml:
代码:
MainActivity:
LeftFragment:
RightFragment:
源代码下载:
点击下载源码
MainActivity包含有两个Fragment,LeftFragment和RightFragment,如果Leftfragment想要获取RightFragment中的数据,那么首先要通过FragmentManager获取的RightFragment的实例,然后获取到RightFragment的布局View,然后就可以通过View获取其EditText输入的值。右侧获取左侧的值也是相同原理。
实现效果:
点击右侧Fragment中的按钮,获取到了左侧Fragment EditText中的数值,然后通过吐司显示出来。
源代码:
布局文件:
activity_main:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <LinearLayout android:id="@+id/left" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="#CCCCCC" android:orientation="vertical" > </LinearLayout> <LinearLayout android:id="@+id/right" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical" > </LinearLayout> </LinearLayout>
left.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" tools:context=".MainActivity" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="获取右侧的Fragment中的数据" /> </LinearLayout>
right.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" tools:context=".MainActivity" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="获取左侧的Fragment中的数据" /> </LinearLayout>
代码:
MainActivity:
package com.fragmentdemo7_commutetwofrag; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; /** * 该Activity包括两个Fragment:LeftFragment和RightFragment * */ public class MainActivity extends Activity { private FragmentManager manager; private FragmentTransaction transaction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); manager = getFragmentManager(); transaction = manager.beginTransaction(); /** * 将左右两个Fragment添加到MainActivity中。 */ LeftFragment leftFragment = new LeftFragment(); RightFragment rightFragment = new RightFragment(); transaction.replace(R.id.left, leftFragment, "left"); transaction.replace(R.id.right, rightFragment, "right"); transaction.commit(); } }
LeftFragment:
package com.fragmentdemo7_commutetwofrag; import android.app.Fragment; import android.app.FragmentManager; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * 左侧的Fragment * */ public class LeftFragment extends Fragment { private Button button; private FragmentManager manager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); manager = getFragmentManager(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.left, null); button = (Button) view.findViewById(R.id.button1); /** * 点击左侧Fragment中的按钮,获取右侧输入在EditText中的数据,以吐司形式显示出来。 */ button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /** * 通过FragmentManager实例化对象,通过Tag获取到RightFragment,然后再获取到该View中的editText中的数据。 */ RightFragment rightFragment = (RightFragment) manager.findFragmentByTag("right"); String msg = ((EditText)rightFragment.getView().findViewById(R.id.editText1)).getText().toString(); Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show(); } }); return view; } }
RightFragment:
package com.fragmentdemo7_commutetwofrag; import android.app.Fragment; import android.app.FragmentManager; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * 右侧的Fragment */ public class RightFragment extends Fragment { private Button button; private FragmentManager manager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); manager = getFragmentManager(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.right, null); button = (Button) view.findViewById(R.id.button1); /** * 点击右侧Fragment中的按钮,获取左侧输入在EditText中的数据,以吐司形式显示出来。 */ button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /** * 通过FragmentManager实例化对象,通过Tag获取到LeftFragment,然后再获取到该View中的editText中的数据。 */ LeftFragment leftFragment = (LeftFragment) manager.findFragmentByTag("left"); String msg = ((EditText)leftFragment.getView().findViewById(R.id.editText1)).getText().toString(); Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show(); } }); return view; } }
源代码下载:
点击下载源码
相关文章推荐
- Android-Fragment与Fragment之间数据获取
- Activity与Fragment数据传递之Activity之间获取数据 分类: Android 2015-07-02 10:13 10人阅读 评论(0) 收藏
- Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)
- Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)
- Activity与Fragment数据传递之Fragment之间获取数据 分类: Android 2015-07-02 10:33 11人阅读 评论(0) 收藏
- Activity与Fragment数据传递之Activity之间获取数据
- [转]Android:Activity+Fragment及它们之间的数据交换(一)
- Android fragment和activity之间的数据传递交互
- Activity与Fragment数据传递之Activity从Fragment获取数据 分类: Android 2015-07-02 09:56 12人阅读 评论(0) 收藏
- Android:Activity+Fragment及它们之间的数据交换
- Android 数据传递(二)Activity与fragment之间的通信
- Activity与Fragment数据传递之Fragment之间获取数据
- Android学习系列之(八)Fragment之间的数据传递与导航抽屉的实现
- Android 笔记-Fragment 与 Activity之间传递数据
- Android Fragment与Fragment之间数据获取
- android Activity和Fragment之间的数据传输的实现
- Android:Activity+Fragment及它们之间的数据交换
- Android笔记Fragment与Activity之间传递数据
- Android:Activity+Fragment及它们之间的数据交换(一)
- Android中Activity和Fragment之间数据传递(例子中也有事务加载Fragment)