上一篇文章我们理解怎样使用接口回调的方式将数据从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结果展示: