1.Fragment的生命周期:

简单在新建一个MyFragment继承自Fragment,重写各个生命周期回调方法,各个方法中直接输出标识相关函数被调用的信息。

重写MainActivity的各个生命周期回调方法,同样输出标识信息。

MyFragment.java:

  1 public class MyFragment extends Fragment {
  2
  3       @Override
  4
  5       public void onActivityCreated(Bundle savedInstanceState) {
  6
  7            // TODO Auto-generated method stub
  8
  9            super.onActivityCreated(savedInstanceState);
 10
 11            Log.i("FRAGMENT","onActivityCreated()");
 12
 13       }
 14
 15       @Override
 16
 17       public View onCreateView(LayoutInflater inflater, ViewGroup container,
 18
 19                  Bundle savedInstanceState) {
 20
 21            // TODO Auto-generated method stub
 22
 23            Log.i("FRAGMENT","onCreateView()");
 24
 25            TextView textView = new TextView(getActivity());
 26
 27            textView.setText("This is a fragment");
 28
 29            return textView;
 30
 31       }
 32
 33       @Override
 34
 35       public void onDestroyView() {
 36
 37            // TODO Auto-generated method stub
 38
 39            super.onDestroyView();
 40
 41            Log.i("FRAGMENT","onDestroyView()");
 42
 43       }
 44
 45       @Override
 46
 47       public void onAttach(Activity activity) {
 48
 49            // TODO Auto-generated method stub
 50
 51            super.onAttach(activity);
 52
 53            Log.i("FRAGMENT","onAttach()");
 54
 55       }
 56
 57       @Override
 58
 59       public void onCreate(Bundle savedInstanceState) {
 60
 61            // TODO Auto-generated method stub
 62
 63            super.onCreate(savedInstanceState);
 64
 65            Log.i("FRAGMENT","onCreate()");
 66
 67       }
 68
 69       @Override
 70
 71       public void onStart() {
 72
 73             // TODO Auto-generated method stub
 74
 75            super.onStart();
 76
 77            Log.i("FRAGMENT","onStart()");
 78
 79       }
 80
 81       @Override
 82
 83       public void onResume() {
 84
 85            // TODO Auto-generated method stub
 86
 87            super.onResume();
 88
 89            Log.i("FRAGMENT","onResume()");
 90
 91       }
 92
 93       @Override
 94
 95       public void onPause() {
 96
 97            // TODO Auto-generated method stub
 98
 99            super.onPause();
100
101            Log.i("FRAGMENT","onPause()");
102
103       }
104
105       @Override
106
107       public void onStop() {
108
109            // TODO Auto-generated method stub
110
111            super.onStop();
112
113            Log.i("FRAGMENT","onStop()");
114
115       }
116
117       @Override
118
119       public void onDestroy() {
120
121            // TODO Auto-generated method stub
122
123            super.onDestroy();
124
125            Log.i("FRAGMENT","onDestroy()");
126
127       }
128
129       @Override
130
131       public void onDetach() {
132
133            // TODO Auto-generated method stub
134
135            super.onDetach();
136
137            Log.i("FRAGMENT","onDetach()");
138
139       }
140
141 }

注意:onCreateView()方法中需返回一个View对象。

MainActivity.java:

 1 public class MainActivity extends ActionBarActivity {
 2
 3     @Override
 4
 5     protected void onCreate(Bundle savedInstanceState) {
 6
 7         super.onCreate(savedInstanceState);
 8
 9         setContentView(R.layout.activity_main);
10
11         Log.i("ACTIVITY","onCreate()");
12
13     }
14
15       @Override
16
17       protected void onStop() {
18
19            // TODO Auto-generated method stub
20
21            super.onStop();
22
23            Log.i("ACTIVITY","onStop()");
24
25       }
26
27       @Override
28
29       protected void onDestroy() {
30
31            // TODO Auto-generated method stub
32
33            super.onDestroy();
34
35            Log.i("ACTIVITY","onDestroy()");
36
37       }
38
39       @Override
40
41       protected void onPause() {
42
43            // TODO Auto-generated method stub
44
45            super.onPause();
46
47            Log.i("ACTIVITY","onPause()");
48
49       }
50
51       @Override
52
53       protected void onResume() {
54
55            // TODO Auto-generated method stub
56
57            super.onResume();
58
59            Log.i("ACTIVITY","onResume()");
60
61       }
62
63       @Override
64
65       protected void onStart() {
66
67            // TODO Auto-generated method stub
68
69            super.onStart();
70
71            Log.i("ACTIVITY","onStart()");
72
73       }
74
75       @Override
76
77       protected void onRestart() {
78
79            // TODO Auto-generated method stub
80
81            super.onRestart();
82
83            Log.i("ACTIVITY","onRestart()");
84
85       }
86
87 }

布局文件:

1 <fragment
2
3         android:id="@+id/frag"
4
5         android:name="cn.csc.fragment.MyFragment"
6
7         android:layout_width="wrap_content"
8
9         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 {@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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"}));}@Overridepublic void onListItemClick(ListView l, View v, int position, long id) {// TODO Auto-generated method stubsuper.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:

 1 public class TmpFragment extends Fragment {
 2
 3       private int index;
 4
 5       private static String[] items = new String[]{"起床洗漱","打拳散步","吃早饭","等公交","打卡"};
 6
 7       public TmpFragment(int index) {
 8
 9            super();
10
11            this.index = index;
12
13       }
14
15       @Override
16
17       public View onCreateView(LayoutInflater inflater, ViewGroup container,
18
19                  Bundle savedInstanceState) {
20
21            // TODO Auto-generated method stub
22
23            TextView tv = new TextView(getActivity());
24
25            tv.setText(items[index]);
26
27            return tv;
28
29       }
30
31 }

3)布局文件:

 1 <fragment
 2
 3         android:id="@+id/frag"
 4
 5         android:name="cn.csc.fragment1.MyFragment"
 6
 7         android:layout_width="0dp"
 8
 9         android:layout_height="match_parent"
10
11         android:layout_weight="1"
12
13         />
14
15     <FrameLayout
16
17         android:id="@+id/frame"
18
19         android:layout_width="0dp"
20
21         android:layout_height="wrap_content"
22
23         android:layout_weight="1">
24
25 </FrameLayout> 

4)运行结果:

以上就是Fragment的简单学习,需要时再认真学下……

转载于:https://www.cnblogs.com/dqrcsc/p/4652223.html

android菜鸟学习笔记27----Fragment的简单使用相关推荐

  1. android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例

    有时候,可能觉得系统提供的控件太丑,就会需要自定义控件来实现自己想要的效果. 以下主要参考<第一行代码> 1.自定义一个标题栏: 系统自带的标题栏很丑,且没什么大的作用,所以我们之前会在o ...

  2. Android:日常学习笔记(8)———探究UI开发(2)

    Android:日常学习笔记(8)---探究UI开发(2) 对话框 说明: 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 提示 ...

  3. 菜鸟学习笔记:Java基础篇7(包装类、时间相关类、文件类、异常处理类)

    菜鸟学习笔记:Java其他常用类 基本数据类型包装类 时间处理和文件处理相关类 Date时间类 SimpleDateFormat Calendar日历类 文件类 异常机制 异常的概念 Java异常处理 ...

  4. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  5. Android Binder 学习笔记

    前言: Binder是Android给我们提供的一种跨进程通信方式.理解Binder能帮助我们更好的理解Android的系统设计,比如说四大组件,AMS,WMS等系统服务的底层通信机制就都是基于Bin ...

  6. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  7. Android:日常学习笔记(6)——探究活动(3)

    Android:日常学习笔记(6)--探究活动(3) 活动的生命周期 返回栈 Android中的活动是可以叠加的,我们每启动一个新活动,就会覆盖在原来的活动上,点击Back以后销毁最上面的活动,下面的 ...

  8. Android:日常学习笔记(8)———探究UI开发(5)

    Android:日常学习笔记(8)---探究UI开发(5) ListView控件的使用 ListView概述 A view that shows items in a vertically scrol ...

  9. Android Studio --- [学习笔记]TCP(第2弹)、GridView、ScrollView

    说明 这篇主要接上一篇Android Studio - > [学习笔记]RadioButton.CheckBox.ImageView.ListView.TCP的三次握手 对上面回答的细解,并用J ...

最新文章

  1. pandas写excel报错ModuleNotFoundError: No module named ‘xlwt‘
  2. ajax传向前台的html代码里又有事件的时候,绑定事件失败解决方法
  3. JavaScript基础学习之运算符(三)
  4. 文件包含——概念(一)
  5. 不断进化的分支和需求管理
  6. HttpResponse 类
  7. 小狗扫地机器人与石头_石头扫地机器人 T7:使用一周后的真实测评报告
  8. 2018 ngChina —— “跨平台”版块简介
  9. No portmap or rpcbind service is running on this host
  10. python画五角星_Python第25课:海龟绘图_自定义函数的应用
  11. python写连点脚本_python鼠标连点器-测试版
  12. “冯唐易老,李广难封”的启示
  13. 算法三十四:最近点对
  14. 在Delphi中 XLSReadWriteII5如何导出Excel2003或Excel2007版本的问题
  15. 数字IC后端流程——(三)布局Placement
  16. libpng16.so.16错误
  17. 从键盘输入接收多个整数,直到输入quit的时结束输入,把输入过的整数倒序排序输出。
  18. MySQL简介、M有SQL的存储引擎、表、字段和数据
  19. 如何将PDF删除水印?PDF删除水印的方法
  20. 网络协议(5) 详解 TCPIP 协议(完结)

热门文章

  1. HDU - 6599 I Love Palindrome String (回文树+Manacher、回文树+hash)
  2. 湖南大学第十四届ACM程序设计新生杯(重现赛)L-The Digits String (矩阵快速幂)
  3. numpy高级操作,求高维矩阵的距离矩阵(方阵)以及 求某一个维度的累加和 , 矩阵切片操作
  4. 概率论-4.2 中心极限定理
  5. [攻防世界 pwn]——反应釜开关控制
  6. 计算机课搞事情检讨,上微机课玩游戏检讨书
  7. JavaSE 6之脚本引擎让程序如虎添翼
  8. 最全面 Nginx 入门教程 + 常用配置解析
  9. maven book
  10. 美国次级贷款来龙去脉