目录
add方法:(如果Fragment会被频繁的被使用,可以使用add方法,一般需要结合hide和show方法一起使用)
replace方法:(Fragment会在被replace后被销毁onDestory(),如果旧Fragment无须再次使用,可以使用replace方法将其销毁)
hide方法和show方法(隐藏当前的Fragment,设置为不可见,但是并不会销毁)
remove()方法(移除当前的Fragment,设置为不可见,可能会被销毁)
Fragment的创建
静态加载(用的很少)
1、定义Fragment的xml的布局文件
2、自定义Fragment类,需继承Fragment类或子类,同时onCreateView()方法,在方法中,通过inflater.inflate加载布局文件,接着返回view即可。
3、在需要加载Fragment的Acivitiy对应的布局文件<fragment>的name属性需要为全限定类名:即为调用自己定义的网页。
<!--一定要注意的是:name属性是fragment的全限定名-->
<fragment
android:id="@+id/my_fragment_id"
android:name="com.example.day004.fragment.MyFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</fragment>
动态加载
1、获得FragmentManger对象,通过getFragmentManget();
2、获得FragmentTransaction对象,用类没打点调用beginTransaction()方法;
3、调用replace()方法加载Fragment;
4、在最后用commit()方法提交事务;(方法不是唯一)
//1,创建fragment的管理对象
FragmentManager supportFragmentManager = getSupportFragmentManager();
//2,获取fragment的事物对象,并开启事务
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
//3,调用事务中相应的方法,来操作fragment
//add方法参数,第一个要放入的容器(布局的Id),第二个是fragment对象
fragmentTransaction.add(R.id.main_layout_id,new MyFragment());
//4,提交事务
fragmentTransaction.commit();
Fragment的常用的方法
add方法:(如果Fragment会被频繁的被使用,可以使用add方法,一般需要结合hide和show方法一起使用)
使用add()方法添加Fragment
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
FragmentA fragmentA=new FragmentA();
transaction.add(R.id.main_frame_layout, fragmentA);
transaction .hide(fragmentB);
transaction.show(fragmentA);
replace方法:(Fragment会在被replace后被销毁onDestory(),如果旧Fragment无须再次使用,可以使用replace方法将其销毁)
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
FragmentA fragmentA= new FragmentA();
transaction.replace(R.id.main_frame_layout, fragmentA);
transaction.commit();
hide方法和show方法(隐藏当前的Fragment,设置为不可见,但是并不会销毁)
FragmentA fragmentA= new FragmentA();
transaction.add(R.id.main_frame_layout, fragmentA);
transaction .hide(fragmentB);
transaction.show(fragmentA);
remove()方法(移除当前的Fragment,设置为不可见,可能会被销毁)
FragmentA fragmentA= new FragmentA();
transaction.remove(fragmentA);
transaction.show(fragmentB);
transaction.commit();
FragmentManager(统一管理Fragment)
获取方式:①Android 3.0前的版本使用getSupportFragmentManager()方法获取
②Android 3.0之后的版本用getFragmentManager()获取