首页 > 学院 > 开发设计 > 正文

静态fragment传值

2019-11-06 09:52:02
字体:
来源:转载
供稿:网友

第一种:

主布局文件:

[html] view plain copy <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的布局文件[html] view plain copy <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的布局文件[html] view plain copy <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的逻辑代码文件[java] view plain copy <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;      @Override      public void onAttach(Activity activity) {          super.onAttach(activity);          call=(CallBack) getActivity();      }      @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) {              call.getData(et.getText().toString());                }          });          return view;      }      public interface CallBack      {          public void getData(String data);      }  }  </span>  

主逻辑代码文件:

[java] view plain copy <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") @Override      public 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的逻辑代码文件[java] view plain copy <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{        @Override      public 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对应的布局文件两个都同上

主布局文件

[html] view plain copy <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的逻辑代码文件[java] view plain copy <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的逻辑代码文件

[java] view plain copy <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;      @Override      public 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> 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表