android菜鸟学习笔记27----Fragment的简单使用
1.Fragment的生命周期:
简单在新建一个MyFragment继承自Fragment,重写各个生命周期回调方法,各个方法中直接输出标识相关函数被调用的信息。
重写MainActivity的各个生命周期回调方法,同样输出标识信息。
MyFragment.java:
public class MyFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
Log.i("FRAGMENT","onActivityCreated()");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
Log.i("FRAGMENT","onCreateView()");
TextView textView = new TextView(getActivity());
textView.setText("This is a fragment");
return textView;
}
@Override
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
Log.i("FRAGMENT","onDestroyView()");
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
Log.i("FRAGMENT","onAttach()");
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.i("FRAGMENT","onCreate()");
}
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.i("FRAGMENT","onStart()");
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i("FRAGMENT","onResume()");
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.i("FRAGMENT","onPause()");
}
@Override
public void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.i("FRAGMENT","onStop()");
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i("FRAGMENT","onDestroy()");
}
@Override
public void onDetach() {
// TODO Auto-generated method stub
super.onDetach();
Log.i("FRAGMENT","onDetach()");
}
}
注意:onCreateView()方法中需返回一个View对象。
MainActivity.java:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("ACTIVITY","onCreate()");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.i("ACTIVITY","onStop()");
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i("ACTIVITY","onDestroy()");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.i("ACTIVITY","onPause()");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i("ACTIVITY","onResume()");
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.i("ACTIVITY","onStart()");
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.i("ACTIVITY","onRestart()");
}
}
布局文件:
<fragment
android:id="@+id/frag"
android:name="cn.csc.fragment.MyFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
注意,添加的fragment需要通过name属性指定自己新建的fragment的权限定名。
运行结果:

按下模拟器的BACK按钮:

中间插入了dalvik的垃圾回收,不过整体的顺序是没有改变的:
整个生命周期各个回调函数的调用过程如下:
显示到前台:
MyFragment onAttach() 附加到activity上
MyFragment onCreate() fragment创建
MyFragment onCreateView() fragment创建自己的视图
MainActivity onCreate() activity创建
MyFragment onActivityCreated()
MainActivity onStart()
MyFragment onStart()
MainActivity onResume()
MyFragment onResume()
按后退键
MyFragment onPause()
MainActivity onPause()
MyFragment onStop()
MainActivity onStop()
MyFragment onDestoryView() 销毁掉自己的视图
MyFragment onDestory()
MyFragment onDetach() 解除和activity的关系
MainActivity onDetory()
2.一个简单的两个Fragmet联系的示例,点击其中一个另一个发生变化:
1)新建MyFragment继承自ListFragment:
public class MyFragment extends ListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_activated_1, android.R.id.text1,
new String[]{"6:00","6:30","7:20","8:00","8:40"}));
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
//设置为单选模式,单击选中
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setItemChecked(position, true);
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fr = new TmpFragment(position);
ft.replace(R.id.frame, fr);
ft.commit();
}
}
2)新建TmpFragment继承自Fragment:
public class TmpFragment extends Fragment {
private int index;
private static String[] items = new String[]{"起床洗漱","打拳散步","吃早饭","等公交","打卡"};
public TmpFragment(int index) {
super();
this.index = index;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
TextView tv = new TextView(getActivity());
tv.setText(items[index]);
return tv;
}
}
3)布局文件:
<fragment
android:id="@+id/frag"
android:name="cn.csc.fragment1.MyFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
/>
<FrameLayout
android:id="@+id/frame"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
</FrameLayout>
4)运行结果:


以上就是Fragment的简单学习,需要时再认真学下……
android菜鸟学习笔记27----Fragment的简单使用的更多相关文章
- android菜鸟学习笔记21----ContentProvider(一)ContentProvider的简单使用
ContentProvider是Android四大组件之一,它用来封装数据,并通过ContentResolver接口将数据提供给其他应用.只有当需要在多个应用之间共享数据时才会用到ContentPro ...
- android菜鸟学习笔记31----Android使用百度地图API(二)获取地理位置及地图控制器的简单使用
1.获取当前地理位置: Android中提供了一个LocationManager的类,用于管理地理位置.不能通过构造函数获取该类的实例,而是通过Context的getSystemService(): ...
- android菜鸟学习笔记22----ContentProvider(二)ContentObserver的简单使用
现在有这样一个应用A通过ContentProvider提供自己的数据给其他应用,应用B通过ContentResolver获取应用A中提供的数据,并将其展示在ListView中,而应用C通过Conten ...
- android菜鸟学习笔记12----Android控件(一) 几个常用的简单控件
主要参考<第一行代码> 1.TextView: 功能与传统的桌面应用开发中的Label控件相似,用于显示文本信息 如: <TextView android:layout_width= ...
- android菜鸟学习笔记14----Android控件(三) ListView的简单使用
MVC模式: MVC的基本原理就是通过Controller连接View和Model.当View中所显示的数据发生变化时,会通知Controller,然后由Controller调用Model中的相关方法 ...
- android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例
有时候,可能觉得系统提供的控件太丑,就会需要自定义控件来实现自己想要的效果. 以下主要参考<第一行代码> 1.自定义一个标题栏: 系统自带的标题栏很丑,且没什么大的作用,所以我们之前会在o ...
- android菜鸟学习笔记30----Android使用百度地图API(一)准备工作及在应用中显示地图
1.准备工作: 百度地图API是免费开放的,但是需要申请API Key: 1)先注册一个百度开发者帐号 2)进入百度开放服务平台http://developer.baidu.com/ 3)进入LBS云 ...
- android菜鸟学习笔记29----Android应用向用户发送提示信息的方式总结
常见的向用户发送提示信息的方式有3种,分别为: 1)发送Toast信息 2)弹出对话框 3)发送通知 总结如下: 方式1:发送Toast信息: 这种方式最简单,在之前的学习中多次使用过.Toast是在 ...
- android菜鸟学习笔记24----与服务器端交互(一)使用HttpURLConnection和HttpClient请求服务端数据
主要是基于HTTP协议与服务端进行交互. 涉及到的类和接口有:URL.HttpURLConnection.HttpClient等 URL: 使用一个String类型的url构造一个URL对象,如: U ...
随机推荐
- mui 上拉加载更多
看起来很简单的东西,实践过程中还是出现了很多麻烦,比如上拉时,状态条跑到了顶部,因为内容没有添加到容器中,再比如下拉的回调函数使用问题,this的传递. html实现部分: <div class ...
- Flex开发实战(一)--Flex的具体介绍
背景 因为近期要维护公司的项目,项目里面用到了Flex技术,所以近期一直在恶补.这篇博文就将近期的学习内容,进行一下简单的总结. 不管是做web还是桌面应用.相信大家对于界面的要求已经越来越高.界面趋 ...
- 工作流学习——Activiti流程变量五步曲
一.前言 上一篇文章我们将流程实例的启动与查询,任务的办理查询都进行了介绍,我们这篇文章来介绍activiti中的流程变量. 二.正文 流程变量与我们寻常理解的变量是一样的,仅仅只是是用在了我们act ...
- HDU 3917 Road constructions(最小割---最大权闭合)
题目地址:HDU 3917 这题简直神题意... 题目本身就非常难看懂不说..即使看懂了.也对这题意的逻辑感到无语...无论了.. 就依照那题意上说的做吧... 题意:给你n个城市,m个公司.若干条可 ...
- java的IO操作:System类对IO的支持。
目标: 1,掌握SYStem对IO的三种支持: system.out system.in system.err 2,掌握system.out及system.err的区别. 3,掌握输入,输出重定向. ...
- mongoDB 高级查询之取模查询$mod
http://hancang2000.i.sohu.com/blog/view/235140698.htm $mod取模运算 查询age取模10等于0的数据 db.student.find( { ...
- Mac+docker+flask
1.先要保证mac电脑安装docker 安装的话可以通过命令brew install docker 安装成功后启动,docker 然后在终端执行docker version 或者docker info ...
- RabbitMQ 学习笔记(一)特点
RabbitMQ 的具体特点 可靠性: RabbitMQ 使用一些机制来保证可靠性, 如持久化.传输确认及发布确认等. 令灵活的路由: 在消息进入队列之前,通过交换器来路由消息.对于典型的路由功能,R ...
- sqlserver利用链接服务器查询或同步本地数据库和远程数据库
这个实际上是SQLserver的分布式查询:如果一个项目需要二至多台服务器,而我们又必须从几台服务器中将数据取出来,这就必须用分布式查询!在这里有两个概念:本地数据源.远程数据源!本地数据源指的是单个 ...
- C语言基础(20)-文件操作(fopen,getc,fclose)
一.文件操作 读文件的顺序: 1.先打开文件 2.读写文件 3.关闭文件 1.1 fopen FILE *fopen( const char *path, const char *mode ); 函数 ...