初识android——Fragment
2016-03-04 17:21
399 查看
一:Fragment引入的原因
为了适应大屏幕的平板电脑,由于平板电脑的屏幕很大,可以容纳比手机更多的ui组件,并且ui组件直接存在着交互。Fragment简化了大屏幕ui的设计,它不需要开发者管理组件的包含关系和复杂变化,开发者使用Fragment对ui组件进行分组、模块化管理,可以更方便地在运行过程中动态的更新Activity的用户界面。二:包与继承关系:
三:创建Fragment
1、开发者实现的Fragment必须继承Fragment基类或它的子类2、需要实现的方法:
onCreate():系统创建Fragment对象后回调这个方法,实现代码中只初始化想要的在Fragment中保持的必要组件,当Fragment被暂停或停止后可以恢复;
onCreateView():当Fragment绘制界面组件是回调这个方法。该方法必须返回一个View,该View即Fragment所显示的View
onCreateView()方法重写:
@Override public void onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ //加载/res/layout/目录下的自定义Fragment布局文件myfragment_layout View rootView = inflater.inflat(R.layout.myfragment_layout,container,false); //获取布局文件中的一个控件 TextView textView = (TextView)rootView.findViewById(R.id.textview); //do something ... ... ... return rootView; }
四:在Activity布局文件中部署Fragment
部署Fragment有两种方式:在布局文件中直接使用 fragmen标签来指定Fragment,如:
<fragment class="com.example.android.apis.app.FragmentLayout$TitlesFragment" android:id="@+id/titles" android:layout_weight="1" android:layout_width="0px" android:layout_height="match_parent" />
通过FrameLayout来部署Fragment,如:
<FrameLayout android:id="@+id/details" android:layout_weight="1" android:layout_width="0px" android:layout_height="match_parent" android:background="?android:attr/detailsElementBackground" />
通过这种方式部署的Fragment在Activity中可使用FragmentManager对Fragment进行替换
//MyFragment 是自定义Fragment MyFragment myfragment = new MyFragment(); //向将要替换的Fragment对象中存入一些数据 Bundle bundle = new Bundle(); bundle.putXxx("InfoKey",InfoValue); myfragment.setArguments(bundle); //通过FragmentManager对Fragment进行替换 getFragment().beginTransaction().replace(R.id.detail,myfragment).commit(); //R.id.detail:Activity的布局文件中FrameLayout的id
五:Fragment与Activity之间的通信
Activity向Fragment传递信息可以借助Bundle来完成Fragment向Activity传递信息:
⑴:在Fragment中第一一个回调接口,该Fragment所在的Activity需要实现这个接口,该Fragment将通过这个接口与Activity进行通信
public interface CallBacks{ public void onItemSelected(int id); }
⑵:Fragment需要重写onAttach(),和onDetach()方法
private CallBacks mcallbacks //当该Fragment被添加、显示到Activity时,回调该方法 @Override public void onAttach(Activity activity){ super.onAttach(); //把该Activity当成CallBacks对象 mcallbacks= (CallBacks)activity; } //当该Fragment从Activity删除时,回调此方法 @Override public void onDetach(){ super().Detach(); //将mcallbacks赋为null mcallbacks = null; }
⑶:Fragment所在的Activity实现其回调方法,Fragment通过自定义回调方法的参数来传递信息
⑷:为Fragment添加事件监听器,在适当时候调用mcallbacks.onItemSelected(infomations);向Activity传递信息,这句代码本质就是调用Activity中的onItemSelected方法,因为mcallbacks =(CallBack) Activity;
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories