Android进阶——Fragment的静态与动态加载

xiaoxiao2021-02-28  23

学会使用Fragment的静态加载与动态加载

(一)fragment的概念:

Fragment是一种在Android3.0开始引入新的API技术,在Activity中将UI组件进行分组和模块化管理,而分组后的UI组件就是Fragment。


(二)为什么使用Fragment

一个Activity页面中可以包含多个Fragment模块,而同一个Fragment模块也可以被多个Activity使用。就可以解决局部布局问题。

总结优点:

实现界面的灵活切换;布局切换更加流畅;可以封装成不同的重要组件,进行单独管理生命周期和UI布局;无须在AndroidManifest中注册,在布局文件中直接引用;

(三)Fragment的静态加载

步骤:

新建一个空的Activity;在Activity布局文件中进行行布局,可以写入一个TextView控件;新建Fragment类,导入SDK中的Fragment包(不用使用V4包中的Fragment);

返回ctivity布局文件写入fragment,注意一定要写它的name和id。

图片展示:

代码展示:

<fragment android:id="@+id/fa" android:name="com.lenovo.dandan.fragmentprojects.fragment.BlankFragment" android:layout_width="match_parent" android:layout_height="match_parent"> </fragment>

(四)Fragment的动态加载

步骤:

建立新的活动Activity;新建两个Fragment;在Activity布局文件中添加两个按钮,用FragmentLayout布置碎片活动;在Activity.javaz中定义两个Feagment页面,绑定Button的ID,为Button添加监听;最后设置点击事件。

图片展示:

代码展示:

<FrameLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent"></FrameLayout> public void onClick(View view) { FragmentManager manager=getFragmentManager(); FragmentTransaction fragmentTransaction=manager.beginTransaction(); switch (view.getId()) { case R.id.xs_btn1: if(fragmentA==null){ fragmentA=new FragmentA(); } fragmentTransaction.replace(R.id.content,fragmentA); break; case R.id.xs_btn2: if(fragmentB==null){ fragmentB=new FragmentB(); } fragmentTransaction.replace(R.id.content,fragmentB); break; default: break; } fragmentTransaction.commit(); }

(五)Fragment与Adapter结合

图片预览:

创建Adapter public class MyAdapter extends FragmentPagerAdapter { private List<Fragment> mfragmentList; public MyAdapter(FragmentManager fm, List<Fragment>fragmentList) { super(fm); this.mfragmentList=fragmentList; } @Override public Fragment getItem(int position) { return mfragmentList.get(position); } @Override public int getCount() { return mfragmentList.size(); } }

创建三个Fragment

创建适配器并绑定

//创建适配器 MyAdapter adapter = new MyAdapter(getSupportFragmentManager(), fragmentList); //绑定 viewPager.setAdapter(adapter); 页面滑动切换 public void onClick(View view) { switch (view.getId()) { case R.id.news_btn: viewPager.setCurrentItem(0); break; case R.id.friend_btn: viewPager.setCurrentItem(1); break; case R.id.contact_btn: viewPager.setCurrentItem(2); break; default: break; } }
转载请注明原文地址: https://www.6miu.com/read-1700368.html

最新回复(0)