[关闭]
@XQF 2017-02-10T21:36:59.000000Z 字数 1932 阅读 1035

两种fragment的使用

《Android探险》


两种fragment从何说起?应该就是一个静态,一个动态,动静主要是说的托管方式。先来把公共部分写了,那就是新建fragment,和Activity;

MainActivity.java

  1. public class MainActivity extends Activity{
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState){
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. }
  7. }

test_frag.xml

  1. <LinearLayout xmlns:android="http://schmemas.android.com/apk/res/android"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:orientation="vertical">
  5. <TextView
  6. android:id="@+id/text_view"
  7. android:layout_width="match_parent"
  8. android:layout_height="wrap_content"/>
  9. </LinearLayout>

TestFragment.java

  1. public class TestFragment entends Fragment{
  2. @Override
  3. public View onCreate(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
  4. View view=inflater.inflate(R.layout.test_fragnull);
  5. return view;
  6. }
  7. }

静态使用

所谓的静态使用fragment我当时学习的时候类比四大组件的注册,,。,。哈哈,我看成fragment在托管Acticity中注册。

主要是《第一行代码》上是这样使用的
activity_main.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:orientation="vertical">
  5. <fragment
  6. android:name="包名.TestFragment"
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"/>
  9. </LinearLayout>

这样就实现了托管

动态使用

就是通过FragmentManager动态添加

activity_main.xml

  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:id="@+id/fragment_container"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. </FrameLayout>

修改MainActivity.java

  1. public class MainActivity extends Activity {
  2. @Override
  3. protected void onCreate(Bundle savedInsatnceState){
  4. super.onCreate(savedInstanceState);
  5. FragmentManager fm=getFragmentManager();
  6. TestFragment fragment=fm.findFragmentById(R.id.fragment_container);
  7. if(fragment==null){
  8. fragment=new TestFragment();
  9. fm.beginTransaction().add(R.id.fragment_container,fragment).commit();
  10. }
  11. }
  12. }

一定注意差别,动态还是要好点,这个容器视图还可以用来弄其他fragment。又减少代码了i

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注