Fragment学习之Activity传递数据到Fragment

上一篇文章我们理解怎样使用接口回调的方式将数据从Fragment传递到Activity中,这里我们将探讨如何将数据从Activity传到Fragment中。

思路:把数据先保存到Bundle中,然后在调用setArguments()方法进行传递。


MainActivity.java代码:

public class MainActivity extends FragmentActivity {

	private FragmentManager manager;
	private FragmentTransaction transaction;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		/* 获取manager */
		manager = this.getSupportFragmentManager();
		/* 创建事物 */
		transaction = manager.beginTransaction();

		/* 创建LeftFragment*/
		LeftFragment leftFragment = new LeftFragment();
		/*创建一个Bundle用来存储数据,传递到Fragment中*/
		Bundle bundle = new Bundle();
		/*往bundle中添加数据*/
		bundle.putString("name", "廖泽民");
		/*把数据设置到Fragment中*/
		leftFragment.setArguments(bundle);
		/* 把Fragment添加到对应的位置 */
		transaction.add(R.id.left, leftFragment, "left");
		/* 提交事物 */
		transaction.commit();


	}

}

LeftFragment.java代码:

public class LeftFragment extends Fragment {


	public LeftFragment() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

		/*动态加载布局*/
		View view = inflater.inflate(R.layout.left, null);
		/*从动态布局中获取控件*/
		TextView txtView = (TextView) view.findViewById(R.id.txt);
		/*通过getArgments()方法获取从Activity传过来的值*/
		Bundle bundle = this.getArguments();
		/*为TextView设置值*/
		txtView.setText(bundle.getString("name"));
		
		return view;
	}
	
	@Override
	public void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
	}
	
}

activity_main.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="match_parent"
    android:orientation="horizontal"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/left"
        android:layout_width="224dp"
        android:layout_height="match_parent"
        android:background="#CCCCCC"
        android:orientation="vertical" >
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical" >

    </LinearLayout>

</LinearLayout>

left.xml:

<?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" >


    <TextView 
        android:id="@+id/txt"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
</LinearLayout>

demo结果展示:

Fragment学习之Activity传递数据到Fragment_第1张图片

你可能感兴趣的:(Bundle,FragmentManager,setArguments)