安卓:Fragment向Fragment传值的3种方法
来源:互联网 发布:2015软件外包排行 编辑:程序博客网 时间:2024/06/07 08:25
第一种:
主布局文件:
<span style="font-size:18px;"><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" android:orientation="horizontal"><fragment android:id="@+id/fg1" android:name="mars.day12_fragmenttofragment.Fragment1" android:layout_height="match_parent" android:layout_weight="1" android:layout_width="0dp"/> <LinearLayout android:id="@+id/fg2" android:layout_height="match_parent" android:layout_weight="1" android:layout_width="0dp" android:orientation="horizontal"> </LinearLayout></LinearLayout></span>第一个Fragment的布局文件
<span style="font-size:18px;"><?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" android:gravity="center"> <EditText android:id="@+id/et" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="30sp"/> <Button android:id="@+id/bt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" android:textSize="30sp"/></LinearLayout></span>第2个Fragment的布局文件
<span style="font-size:18px;"><?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="#0000ff" android:gravity="center"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="30sp" android:text="接收的内容:"/> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="30sp"/></LinearLayout></span>第1个Fragment的逻辑代码文件
<span style="font-size:18px;">package mars.day12_fragmenttofragment;import android.annotation.SuppressLint;import android.app.Activity;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;@SuppressLint("NewApi") public class Fragment1 extends Fragment{EditText et;CallBack call;@Overridepublic void onAttach(Activity activity) {super.onAttach(activity);call=(CallBack) getActivity();}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view=inflater.inflate(R.layout.fragment1,container,false);et=(EditText) view.findViewById(R.id.et);Button bt=(Button) view.findViewById(R.id.bt);bt.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {call.getData(et.getText().toString());}});return view;}public interface CallBack{public void getData(String data);}}</span>
主逻辑代码文件:
<span style="font-size:18px;">package mars.day12_fragmenttofragment;import mars.day12_fragmenttofragment.Fragment1.CallBack;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.view.Menu;public class MainActivity extends Activity implements CallBack{FragmentManager fm; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fm=getFragmentManager();FragmentTransaction shiwu = fm.beginTransaction();shiwu.replace(R.id.fg2,new Fragment2());shiwu.commit(); }@SuppressLint("NewApi") @Overridepublic void getData(String data) {Fragment2 fg2=new Fragment2();Bundle bundle=new Bundle();bundle.putString("mes",data);fg2.setArguments(bundle);FragmentTransaction shiwu = fm.beginTransaction();shiwu.replace(R.id.fg2,fg2);shiwu.commit();} }</span>
第二个Fragment的逻辑代码文件
<span style="font-size:18px;">package mars.day12_fragmenttofragment;import android.annotation.SuppressLint;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;@SuppressLint("NewApi") public class Fragment2 extends Fragment{@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view=inflater.inflate(R.layout.fragment2,container,false);TextView tv=(TextView) view.findViewById(R.id.tv);Bundle bundle=getArguments();//判断需写if(bundle!=null){tv.setText(bundle.getString("mes"));}return view;}}</span>
第二种和第三种方法:
Fragment对应的布局文件两个都同上
主布局文件
<span style="font-size:18px;"><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" android:orientation="horizontal"><fragment android:id="@+id/fg1" android:name="mars.day12_fragmenttofragment.Fragment1" android:layout_height="match_parent" android:layout_weight="1" android:layout_width="0dp"/> <LinearLayout android:id="@+id/fg2" android:layout_height="match_parent" android:layout_weight="1" android:layout_width="0dp" android:orientation="horizontal"> </LinearLayout></LinearLayout></span>
第一个Fragment的逻辑代码文件
<span style="font-size:18px;">package mars.method2and3;import mars.day12_fragmenttofragment.R;import android.annotation.SuppressLint;import android.app.Activity;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;@SuppressLint("NewApi") public class Fragment1 extends Fragment{ EditText et; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.fragment1,container,false); et=(EditText) view.findViewById(R.id.et); Button bt=(Button) view.findViewById(R.id.bt); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String data=et.getText().toString(); //第二种方法// Fragment2 fg2=(Fragment2) getFragmentManager().findFragmentById(R.id.fg2);// fg2.setData(data); //第三种方法 TextView tv=(TextView) getActivity().findViewById(R.id.tv); tv.setText(data); } }); return view; }}</span>
第2个Fragment的逻辑代码文件
<span style="font-size:18px;">package mars.method2and3;import mars.day12_fragmenttofragment.R;import android.annotation.SuppressLint;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;@SuppressLint("NewApi") public class Fragment2 extends Fragment{TextView tv;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view=inflater.inflate(R.layout.fragment2,container,false);tv=(TextView) view.findViewById(R.id.tv);return view;}public void setData(String str){tv.setText(str);}}</span>
0 0
- 安卓:Fragment向Fragment传值的3种方法
- Fragment向activity传值的接口回调方法
- Fragment.setArguments()方法向fragment对象传递数据的重要作用
- 安卓Fragment的用法
- 安卓Fragment的用法
- android activity向fragment通信,获取fragment的三种方法
- 【安卓】采用静态工厂方法的Fragment实现ViewPager+Fragment
- 【安卓知识点速记】fragment 向activity带参跳转
- 安卓静态Fragment与动态Fragment的理解
- viewPager中的Fragment向其他activity传值方法|activity向activity传值方法
- activity向另一个activity的fragment传值的问题
- fragment 向所属的activity传值的时候
- 安卓-Fragment 详解
- 【安卓笔记】Fragment
- 安卓之Fragment
- 安卓Fragment介绍
- 安卓014Fragment
- 安卓019Fragment
- caffe示例实现之5用CaffeNet训练与测试自己的数据集
- Future与Promise
- Android error 之 Syntax error, insert ";" to complete Local Variable Declaration Statement
- lintcode-数组剔除元素后的乘积-50
- 创建 DB link 来导数据
- 安卓:Fragment向Fragment传值的3种方法
- 0915_MapReduce初窥——Word Count程序
- uva 10881 Piotr's Ants 规律
- 软件测试基础知识(二)
- java面向对象漫谈
- Oracle和MySQL中的dual表
- LeetCode题解——Minimum Window Substring
- SearchBar
- 你不知道的位操作之整数取余