最近使用Fragment有一些小心得,赶紧记录下来。
Fragment的两种加载方式,
第一种,直接添加的方式
//步骤一:添加一个FragmentTransaction的实例 FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); //步骤二:用add()方法加上Fragment的对象ListFragment ListFragment listFragment = new ListFragment(); transaction.add(R.id.fl_usermanage_container, listFragment); //步骤三:调用commit()方法使得FragmentTransaction实例的改变生效 transaction.commit();
第二种,这种方式添加后可以和一个Activity类似,支持系统的返回键,也支持自己当作一个独立的类activity一样
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.fl_usermanage_container, new ListFragment()); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit();
也可以主动关闭:
getSupportFragmentManager().popBackStack();//suport.v4包
或getFragmentManager().popBackStack();
类同Activity的finsh();
下面简单解释下,ListFragment为需要加载的Fragment,fl_usermanage_container为当前父承载页面(可以是Activity也可以是父Fragment)里用来装载ListFragmenta的布局id
<?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"> <FrameLayout android:id="@+id/fl_usermanage_container" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="0dp" android:background="@drawable/white_round" android:orientation="vertical" /> </LinearLayout>
第二类传递数据写法
Bundle bundle = new Bundle(); bundle.putParcelable("adminBean", lists.get(position)); AddFragment addFragment = new AddFragment(); addFragment.setArguments(bundle); FragmentTransaction ft2 = getFragmentManager().beginTransaction(); ft2.replace(R.id.fl_usermanage_container, addFragment); ft2.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft2.addToBackStack(null); ft2.commit();