Fragment
1、什么是Fragment
fragment是一种新的API技术,在它出现之前,页面切换都是通过创建多个activity
2、用Fragment能解决什么问题
- 在Fragment出现之前,一个app需要编写出多套布局方案来满足手机版以及Pad版的布局问题,而通过Fragment可以解决不同屏幕分辨率的适配问题,动态适应。
- 通过Fragment,一个activity可以实现不同页面的切换
- Fragment解决了activity间的切换不流畅,布局切换时更轻量。
- Fragment可以封装成不同的重要组件,并可以单独管理其生命周期和UI布局。
- Fragment无需在AndroidManifest中注册,可以在布局文件中直接引用。
3、导入Fragment应注意的问题
- 使用Fragment时,导入AndroidSDK中的Fragment,包:Android.app.Fragment,不要使用V4包中的Fragment。
- V4包中的Fragment的能兼容到Android1.6,目前Android开发的最低版本是4.0,这里直接使用SDK自带Fragment即可,无需再使用V4支持包里的Fragment。
4、Fragment静态加载办法
加载步骤
1. 新建类继承fragment
2. 重写oncreatview方法
3. 使用layoutflater对象中的inflate方法绑定布局和控件
4. 在activity对应的布局文件中过<fragment>标签引用
示例代码
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<fragment
android:id="@+id/frgment_a"
android:name="com.homework.activity.daysix.fragment.FragmentA"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<fragment
android:id="@+id/fragment_b"
android:name="com.homework.activity.daysix.fragment.FragmentB"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
</LinearLayout>
5、Fragment动态加载办法
加载步骤
1. 新建类继承fragment
2. 重写oncreatview方法
3. 使用layoutflater对象中的inflate方法绑定布局和控件
4. 使用FragmentManger和FragmentTransaction对象进行动态加载
示例代码
case R.id.nvzhaung:
//显示女装的fragment
if(NvZhaungFragment==null){
NvZhaungFragment=new NvZhaungFragment();
}
FragmentManager manager=getFragmentManager();//创建FragmentManger对象
FragmentTransaction transaction=manager.beginTransaction();//创建FragmentTransaction
transaction.replace(R.id.shop,NvZhaungFragment);
transaction.commit();//最后一步提交
FragmentTrasactin方法:
- add:往Activity中添加一个Fragment
- remove:从Activity中移除一个Fragment
- replace:使用另一个Fragment替换当前的Fragment
- hide:隐藏当前的Fragment
- show:显示之前隐藏的Fragment
- commit:提交一个事务
commit方法
- 当所有准备工作完成后,必须调用commit方法才能执行和生效
- 相当于Toast中的show方法,不调用此方法,不会执行
6、Viewpager+Fragment实现页卡滑动切换
使用v4包
<android.support.v4.view.ViewPager
android:id="@+id/wx_pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
动态切换
public void onClick(View view) {
switch (view.getId()){
case R.id.contact_btn:
viewPager.setCurrentItem(0);
break;
case R.id.friend_btn:
viewPager.setCurrentItem(1);
break;
case R.id.news_btn:
viewPager.setCurrentItem(2);
break;
default:
break;
}
}
创建适配器
MyPagerAdapter adapter=new MyPagerAdapter(getSupportFragmentManager(),fragmentList);
绑定适配器
viewPager.setAdapter(adapter);