Fragment参数传递——setArguments

来源:互联网 发布:数据库发票表设计 编辑:程序博客网 时间:2024/04/30 22:36

在Fragment中传递参数方法有多种 第一要会使用setArguments();这个方法

1.首先要有一个Fragment的容器,使用RelativeLayout 就是最好的容器,注意要加id;

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/rl"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent" ></RelativeLayout>

2.添加一个Fragment  

public class Fragment1 extends Fragment{private View view;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubview = inflater.inflate(R.layout.fragment1, container, false);return view;}}


3.在MainActivity中写如下代码

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//1拿到管理者FragmentManager supportFragmentManager = getSupportFragmentManager();//2拿到事务FragmentTransaction beginTransaction = supportFragmentManager.beginTransaction();//创建对象Fragment1 fragment1=Fragment1.newInstance(str);//添加到容器beginTransaction.add(R.id.rl, fragment1);//提交事务beginTransaction.commit();}
4.在Fragment中写一个静态方法 ,
public static Fragment1 newInstance(String str){//1创建对象Fragment1 fragment1=new Fragment1();//Bundle bundle=new Bundle();bundle.putString("param", str);//通过setArguments这个方法fragment1.setArguments(bundle);return fragment1;}

5.同样在Fragment中用onActivityCreated 这个方法来改变控件中的text

/** * 这个方法一定到activity方法走到最后创建的 */@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);Bundle arguments = getArguments();String string = arguments.getString("param");TextView tv = (TextView) view.findViewById(R.id.textView);tv.setText(string);}



0 0