Fragment 基础详解
2016-04-16 12:16
741 查看
在Android3.0时入了Fragment概念,主要目的是用在大屏幕
设备上--例如平板电脑上,支持更加动态和灵活的UI设计。
平板电脑的屏幕要比手机大得多,有更多的空间来放更多的
UI组件,并且这些组件之间可以产生更多的交互。
Fragment在你的应用中应当是一个模块化和可重用的组件,
因为Fragment定义了它自己的布局,以及通过使用它自己的
生命周期回调方法定义了它自己的行为,你可以将Fragment
包含到多个Activity中。
Fragment可以作为Activity界面的一部分组成出现
可以再一个Activity中同时出现多个Fragment,并且一个
Fragment也可以在多个Activity中使用
3. 在Activity运行过程中,可以添加、移除和替换Fragment
4. Fragment你可以相应自己的输入事件,并且有自己的生命
周期,他们的生命周期受宿主Activity的生命周期影响
-----------------------------------------------------------------------------------
静态加载方法:
首先创建mainActivity2 和 myFragment 这两个类,并且让mainActivity2
继承Activity实现OnCreate方法,让myFragment 继承Fragment并且
实现OnCreateView方法,再分别添加main2.xml文件和Fragment.xml
布局文件。其中main2.xml文件如下
-------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
//必须要写Fragment的属性id 和name
android:id="@+id/fragment1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
//绑定java类
android:name="com.example.fragmenttest.MyFragment"
/>
</LinearLayout>
---------------------------------------------------------------------------------------
很明显在main2中包含了一个Fragment,这个Fragment可以在
myFragment 中实现布局。
myFragment部分代码:
------------------------------------------------------------------------------------------
public class MyFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// TODO Auto-generated method stub
//layout文件转换成View对象
/**
* resource:Fragment需要加载的布局文件*
* root:加载layout的父ViewGroup*
* attactToRoot:fakse,不返回父ViewGroup
*/
View view= inflater.inflate(R.layout.fragment, container,false);
TextView tv = (TextView) view.findViewById(R.id.textView1);
tv.setText("通过静态加载Fragment");
return view;
}
}
*-------------------------------------------------------------------------------------
现在已经基本实现了,只要在mainActivity的按钮监听器进行判断,
并且用Intent去转换,即可实现
注意不要忘记在Mainifest.xml文件中声明mainactivity2
动态加载
---------------------------------------------------------------------------------------.
//自定义的类,继承Fragment
MyFragment2 fragment= new MyFragment2();
//创建Fragment管理者
FragmentManager fm= getFragmentManager();
//获取管理者的beginTransaction对象
android.app.FragmentTransaction bts = fm.beginTransaction();
//通过add方法添加
bts.add(R.id.Layout1,fragment);
bts.commit();
设备上--例如平板电脑上,支持更加动态和灵活的UI设计。
平板电脑的屏幕要比手机大得多,有更多的空间来放更多的
UI组件,并且这些组件之间可以产生更多的交互。
Fragment在你的应用中应当是一个模块化和可重用的组件,
因为Fragment定义了它自己的布局,以及通过使用它自己的
生命周期回调方法定义了它自己的行为,你可以将Fragment
包含到多个Activity中。
Fragment可以作为Activity界面的一部分组成出现
可以再一个Activity中同时出现多个Fragment,并且一个
Fragment也可以在多个Activity中使用
3. 在Activity运行过程中,可以添加、移除和替换Fragment
4. Fragment你可以相应自己的输入事件,并且有自己的生命
周期,他们的生命周期受宿主Activity的生命周期影响
-----------------------------------------------------------------------------------
静态加载方法:
首先创建mainActivity2 和 myFragment 这两个类,并且让mainActivity2
继承Activity实现OnCreate方法,让myFragment 继承Fragment并且
实现OnCreateView方法,再分别添加main2.xml文件和Fragment.xml
布局文件。其中main2.xml文件如下
-------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
//必须要写Fragment的属性id 和name
android:id="@+id/fragment1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
//绑定java类
android:name="com.example.fragmenttest.MyFragment"
/>
</LinearLayout>
---------------------------------------------------------------------------------------
很明显在main2中包含了一个Fragment,这个Fragment可以在
myFragment 中实现布局。
myFragment部分代码:
------------------------------------------------------------------------------------------
public class MyFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// TODO Auto-generated method stub
//layout文件转换成View对象
/**
* resource:Fragment需要加载的布局文件*
* root:加载layout的父ViewGroup*
* attactToRoot:fakse,不返回父ViewGroup
*/
View view= inflater.inflate(R.layout.fragment, container,false);
TextView tv = (TextView) view.findViewById(R.id.textView1);
tv.setText("通过静态加载Fragment");
return view;
}
}
*-------------------------------------------------------------------------------------
现在已经基本实现了,只要在mainActivity的按钮监听器进行判断,
并且用Intent去转换,即可实现
注意不要忘记在Mainifest.xml文件中声明mainactivity2
动态加载
---------------------------------------------------------------------------------------.
//自定义的类,继承Fragment
MyFragment2 fragment= new MyFragment2();
//创建Fragment管理者
FragmentManager fm= getFragmentManager();
//获取管理者的beginTransaction对象
android.app.FragmentTransaction bts = fm.beginTransaction();
//通过add方法添加
bts.add(R.id.Layout1,fragment);
bts.commit();
相关文章推荐
- 使用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