设计思想:解决不同分辨率的中端适配问题。
注意:Fragment不能独立存在。Activity不能拆分。
Fragment和Activity的区别:
1.Fragment是到Android3.0+以后出现的,而Activity是一直都存在的
2.一个Activity可以运行多个Fragment,但是一个Activity中不能嵌套Activity
3.Fragment不能脱离Activity而存在
4.Activity是屏幕的主体,而Fragment是Activity的一个组成元素
相同的是二者都有生命周期。
静态加载:xml
步骤:写一个类ListFragment继承自Fragment,重写onCreateView()方法--->创建一个视图,View view=inflater.inflater(R.layout.fragment_list,container,false);并返回该视图view--->在上述自定义类的xml文件中写出自己想要的布局样式--->在另一个Activity中的xml文件中加入上述<fragment>控件,其中要加上android:name="第一个自定义类的全路径"。
在android加载布局中,activity中使用setcontentView方法来加载试图,但是自定义布局中使用inflater来加载布局。
inflater(R.layout.fragment_list,container,false):参数一:布局的资源id,参数二:填充的根视图,参数三:是否将载入的视图绑定到根视图中。
动态加载:java code
好处:很灵活,可以加在任何地方
动态加载步骤:1.创建一个container
2.创建fragment
创建上述静态加载方法第一步中自定义类的的对象
ListFragment fragment=new ListFragment();
3.将fragment放入container中
若想移除或替换摸个控件,可将add()方法换为remove(fragment对象)或replace(fragment对象)方法。
即:写一个类继承自Fragment,重写onCreateView()方法--->创建一个视图,View view=inflater.inflater(R.layout.fragment_list,container,false);并返回该视图view--->在上述自定义类的xml文件中写出自己想要的布局样式--->在另一个activity中的xml文件中写出自己想要的大小格式,添加id--->按照上述动态加载步骤将其加载进来。
特点:模块化,重复使用,可适配屏幕尺寸
Activity向Fragment传值:
setArgments()
putString(String key,String value):键为key值为value。
在自定义ListFragment中定义一个静态方法,如newInstance--->在onCreate中通过键获取其值--->
在onCreateView调用setText方法将其获取的值传递进来--->在主activity中创建自定义类对象时调用newInstance方法,将其值传递进来。
Fragment向Activity传值:
Callback(接口回调)
在自定义类ListFragment中定义一个接口,并设置变量和设置方法--->在onCreateView中实现点击方法--->在主activity中创建ListFragment对象时调用上述设置方法