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的简单使用的更多相关文章

  1. android菜鸟学习笔记21----ContentProvider(一)ContentProvider的简单使用

    ContentProvider是Android四大组件之一,它用来封装数据,并通过ContentResolver接口将数据提供给其他应用.只有当需要在多个应用之间共享数据时才会用到ContentPro ...

  2. android菜鸟学习笔记31----Android使用百度地图API(二)获取地理位置及地图控制器的简单使用

    1.获取当前地理位置: Android中提供了一个LocationManager的类,用于管理地理位置.不能通过构造函数获取该类的实例,而是通过Context的getSystemService(): ...

  3. android菜鸟学习笔记22----ContentProvider(二)ContentObserver的简单使用

    现在有这样一个应用A通过ContentProvider提供自己的数据给其他应用,应用B通过ContentResolver获取应用A中提供的数据,并将其展示在ListView中,而应用C通过Conten ...

  4. android菜鸟学习笔记12----Android控件(一) 几个常用的简单控件

    主要参考<第一行代码> 1.TextView: 功能与传统的桌面应用开发中的Label控件相似,用于显示文本信息 如: <TextView android:layout_width= ...

  5. android菜鸟学习笔记14----Android控件(三) ListView的简单使用

    MVC模式: MVC的基本原理就是通过Controller连接View和Model.当View中所显示的数据发生变化时,会通知Controller,然后由Controller调用Model中的相关方法 ...

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

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

  7. android菜鸟学习笔记30----Android使用百度地图API(一)准备工作及在应用中显示地图

    1.准备工作: 百度地图API是免费开放的,但是需要申请API Key: 1)先注册一个百度开发者帐号 2)进入百度开放服务平台http://developer.baidu.com/ 3)进入LBS云 ...

  8. android菜鸟学习笔记29----Android应用向用户发送提示信息的方式总结

    常见的向用户发送提示信息的方式有3种,分别为: 1)发送Toast信息 2)弹出对话框 3)发送通知 总结如下: 方式1:发送Toast信息: 这种方式最简单,在之前的学习中多次使用过.Toast是在 ...

  9. android菜鸟学习笔记24----与服务器端交互(一)使用HttpURLConnection和HttpClient请求服务端数据

    主要是基于HTTP协议与服务端进行交互. 涉及到的类和接口有:URL.HttpURLConnection.HttpClient等 URL: 使用一个String类型的url构造一个URL对象,如: U ...

随机推荐

  1. EazyUI主页框架搭建纯JS样例

    採用Jfinal+EazyUI  执行起来就好能够了 眼下还未增加后台代码  纯JS代码搭建的一个二级菜单+主页 客户换肤, 给使用EazyUI的新人一个高速可用的JS 搭建界面 也给自己保存下 界面 ...

  2. JS动态插入HTML后不能执行后续JQUERY操作

    通过js追加的html 发现 不能点击 执行函数   普通绑定事件:$('.btn1').click(function(){}绑定 事件委托   解决方法: $("body").d ...

  3. Android笔记:invalidate()和postInvalidate() 的区别及使用——刷新ui

    Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中 ...

  4. 简单模拟Spring的注入

    主要就是读XML技术和反射技术. 在xml中读出相关配置信息,然后利用反射将其实例化为对象,并调用其构造方法,在实例化的过程中将属性注入实例. 实例化和属性注入这些操作都交给了框架,不再需要自己的去n ...

  5. 使用apache POI解析Excel文件

    1. Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. 2. POI结构 ...

  6. Lomboz插件的介绍 下载 安装 问题

    http://www.blogjava.net/javaandcc/articles/251334.html Lomboz是Eclipse的一个主要的开源插件(open-source plug-in) ...

  7. python 学习方法

    依据本人的学习经验,我总结了下面十点和大家分享: 1)学好python的第一步.就是立即到www.python.org站点上下载一个python版本号.我建议刚開始学习的人,不要下载具有IDE功能的集 ...

  8. C++语言基础(13)-抽象类和纯虚函数

    一.基本语法 在C++中,可以将虚函数声明为纯虚函数,语法格式为: ; 纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上=0,表明此函数为纯虚函数. 最后的=0并不表示函数返回值为0,它只起形 ...

  9. socket编程之多次收发数据

    客户端: #-*- coding:utf-8 -*- #客户端程序 import socket client = socket.socket() #1.创建一个客户端对象 client.connect ...

  10. java - day15 - NonameInner

    匿名内部类 public interface Inter {} interface Inter2{ void show(); } main(){ //错误,接口不能实例化 Inter t = new ...