安卓: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
原创粉丝点击