Fragment

1. Fragment是什么

1.什么是Fragment?

fragment它自己的中文意思:碎片;

一个可以将activity拆分成几个完全独立封装的可重用的组件,每个组件有自己的生命周期和ui布局。

2.用fragment能解决什么问题?

说明:总的来说,Fragment和Activity的生命周期类似。需要注意的是,它相比于Activity,多了onAttach(), onDetch(), onCreateView()和onDestroyView()这几个回调函数;但是,却少了onRestart()。
Fragment的生命周期非常复杂,分为以下几种情况:

  • 如果是通过XML中的<fragment/>标签实例化的,那么第一个收到的回调将是onInflate
  • 如果setRetainInstance(true),那么当Activity重建时,Fragment的onDestroy以及Activity重建后Fragment的onCreate回调不会被调用.(无论是否将其添加到了返回栈)
  • 如果当前显示的是Fragment A,然后执行FragmentTransaction.replace(),那么Fragment A会执行onPause()->onStop()->onDestroyView()->onDestroy()->onDetach(),如果执行FragmentTransaction.replace().addToBackStack(),那么Fragment A会执行onPause()->onStop()->onDestroyView()
  • FragmentTransaction.hide(),将不会导致onPause(),而是会触发onHiddenChanged()
  • FragmentTransaction.detach(),会导致onPause()->onStop()->onDestroyView(),注意:onDestroy()和onDetach()不会调用

3.fragment静态加载方法

fragment静态加载所用的布局,android:name属性中是MyFragment.java的全名,android:id中是Fragment的唯一标识(这个必须得加,否则报错,也可用android:tag属性来作唯一标识)。

  1. <fragment  
  2.        android:name="com.example.myfragment.MyFragment"  
  3.        android:id="@+id/myfragment_1"  
  4.        android:layout_width="wrap_content"  
  5.        android:layout_height="wrap_content"  
  6.         />  



4.fragment动态加载方法

1.创建一个类继承Fragment,复写onCreateView方法。
例如:

public class AnotherRightFragment extends Fragment{  

  @Override 
  public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){  

  //传进fragment布局文件创建一个view对象 
  View view =inflater.inflate(R.layout_another_right_fragment,container,flase);
  return view; 
  }
}

2.在MainActivity中创建待添加的fragment实例。

AnotherRightFragment fragment = new AnotherRightFragment();

3.在Activity中通过调用个体FragmentManager()方法获取到FragmentManager。

FragmentManager fragmentManager = getFragmentManager();

4.开启一个事物,通过调用beginTransaction()方法开启。

FragmentTransaction transaction = fragmentManager.beginTransaction();

5.向容器内加入Fragment,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例。

transaction.replace(R.id.right_layout,fragment);

6.提交事务,调用commit()方法来完成。

transaction.commit();


5.viewpager+fragment实现页卡滑动切换

布局文件activity_main.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">


    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="@dimen/top_tab_height"
        android:background="@color/main_top_color" >

        <TextView
            android:id="@+id/picture_text"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"
            android:gravity="center"
            android:text="@string/picture"
            android:textStyle="bold"
            android:textColor="@color/main_top_tab_color"
            android:textSize="@dimen/main_top_tab_text_size" />

        <TextView
            android:id="@+id/movie_text"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"
            android:gravity="center"
            android:text="@string/movie"
            android:textStyle="bold"
            android:textColor="@color/main_top_tab_color"
            android:textSize="@dimen/main_top_tab_text_size" />

        <TextView
            android:id="@+id/music_text"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"
            android:gravity="center"
            android:text="@string/music"
            android:textStyle="bold"
            android:textColor="@color/main_top_tab_color"
            android:textSize="@dimen/main_top_tab_text_size" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/main_line_height"
        android:layout_gravity="bottom"
        android:orientation="vertical"
        android:background="@color/main_top_color"
        >

        <ImageView
            android:id="@+id/cursor"
            android:layout_width="@dimen/main_matrix_width"
            android:layout_height="@dimen/main_line_height"
            android:scaleType="matrix"
            android:src="@color/matrix_color" />
    </LinearLayout>
    <View
        android:layout_width="fill_parent"
        android:layout_height="0.5dp"
        android:background="@color/main_top_color"/>


    <android.support.v4.view.ViewPager
        android:id="@+id/vPager"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_weight="1.0"
        android:background="@color/white"
        android:flipInterval="30"
        android:persistentDrawingCache="animation" />
</LinearLayout>


2.Fragment静态加载怎么用

  1. <fragment  
  2.        android:name="com.example.myfragment.MyFragment"  
  3.        android:id="@+id/myfragment_1"  
  4.        android:layout_width="wrap_content"  
  5.        android:layout_height="wrap_content"  
  6.         />  

以上就是静态加载所用的布局,android:name属性中是MyFragment.java的全名,android:id中是Fragment的唯一标识(这个必须得加,否则报错,也可用android:tag属性来作唯一标识)。

[java]  view plain  copy
  1. public class MainActivity extends ActionBarActivity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.         //做一个简单的UI操作,证明静态加载时我们可以直接获取到  
  8.         //Fragment中的UI控件  
  9.         TextView tv = (TextView) findViewById(R.id.textView);  
  10.         tv.setText("床前明月光");  
  11.     }  
  12. }

3.Fragment动态加载怎么用

实现动态加载,我们需要先了解Fragment事务。熟悉数据库的同学都知道,事务指的就是一种原子性、不可拆分的操作。所谓的Fragment事务就是: 对Fragment进行添加、移除、替换或执行其它动作,提交给Activity的每一个变化。 这就是Fragment事务。

Fragment是UI模块,自然在一个Activity中可以不只有一个模块,所以Android提供了FragmentManage类来管理Fragment,FragmentTransaction类来管理事务。我们对Fragment的动态加载就是先将添加、移除等操作提交到事务,然后通过FragmentManage完成的。

通过FragmentManager.beginTransaction()我们可以开始一个事务。在事务中,我们可以对Fragment进行的操作以及对应的方法如下:
添加:add()
移除:remove()
替换:replace()
提交事务:commit()
上面几个是比较常用的,还有attach()、detach()、hide()、addToBackStack()等方法。
我们需要注意的是,Fragment以ID或Tag作为唯一标识,所以remove和replace的参数是Fragment,这个Fragment目标Fragment一致。在下面的示例里,我使用了一个栈记录所有添加的Fragment,然后在移除时使用。


[java]  view plain  copy
  1.     // 开启一个新事务  
  2. transaction = manager.beginTransaction();  
  3. // 使用add方法添加Fragment,第一个参数是要把Fragment添加到的布局Id  
  4. // 第二个就是要添加的Fragment  
  5.    transaction.add(R.id.fragments, fragment);  
  6.    // 提交事务,否则添加就没成功  
  7.    transaction.commit();  


4.ViewPager+Fragment实现页卡滑动

效果图:



既可以实现滑动使单选按钮改变颜色,也可以通过点击单选按钮实现页面跳转,类似于微信


xml代码(布局文件):

activity_main.xml:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     xmlns:app="http://schemas.android.com/apk/res-auto"  
  5.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"  
  6.     android:orientation="vertical"  
  7.     android:layout_height="match_parent" tools:context="com.example.test0615.MainActivity">  
  8.   
  9.     <android.support.v4.view.ViewPager  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="0dp"  
  12.         android:layout_weight="1"  
  13.         android:id="@+id/vp_main_viewpager"  
  14.         ></android.support.v4.view.ViewPager>  
  15.     <RadioGroup  
  16.         android:layout_width="match_parent"  
  17.         android:layout_height="wrap_content"  
  18.         android:orientation="horizontal"  
  19.         android:id="@+id/rg_main_radio"  
  20.         >  
  21.         <!--layout_weight属性:设置权重,每个单选按钮占屏幕宽度的四分之一;button属性:设置单选按钮不可见-->  
  22.         <RadioButton  
  23.             android:layout_width="wrap_content"  
  24.             android:layout_height="wrap_content"  
  25.             android:button="@null"  
  26.             android:text="微信"  
  27.             android:id="@+id/rb_mian_one"  
  28.             android:layout_weight="1"  
  29.             android:background="@drawable/selector_radiobutton"  
  30.             />  
  31.         <!--background属性:设置单选按钮的选择器-->  
  32.         <RadioButton  
  33.             android:layout_width="wrap_content"  
  34.             android:layout_height="wrap_content"  
  35.             android:button="@null"  
  36.             android:text="通讯录"  
  37.             android:id="@+id/rb_mian_two"  
  38.             android:layout_weight="1"  
  39.             android:background="@drawable/selector_radiobutton"  
  40.             />  
  41.         <RadioButton  
  42.             android:layout_width="wrap_content"  
  43.             android:layout_height="wrap_content"  
  44.             android:button="@null"  
  45.             android:text="发现"  
  46.             android:id="@+id/rb_mian_three"  
  47.             android:layout_weight="1"  
  48.             android:background="@drawable/selector_radiobutton"  
  49.             />  
  50.         <RadioButton  
  51.             android:layout_width="wrap_content"  
  52.             android:layout_height="wrap_content"  
  53.             android:button="@null"  
  54.             android:text="我"  
  55.             android:id="@+id/rb_mian_four"  
  56.             android:layout_weight="1"  
  57.             android:background="@drawable/selector_radiobutton"  
  58.             />  
  59.     </RadioGroup>  
  60.   
  61. </LinearLayout>  

选择器代码:

selcctor_radiobutton:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:state_checked="true" android:drawable="@color/colorPrimary"></item>//单选按钮被选中,背景颜色为蓝色  
  4.     <item android:state_checked="false" android:drawable="@color/colorAccent"></item>//为被选中,背景颜色为粉色  
  5. </selector>  


页面代码:

 fragment_weixin.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical" android:layout_width="match_parent"  
  4.     android:layout_height="match_parent">  
  5.     <TextView  
  6.         android:layout_width="match_parent"  
  7.         android:layout_height="wrap_content"  
  8.         android:text="这是微信页面"  
  9.         android:textSize="40sp"  
  10.         />  
  11. </LinearLayout>  

fragment_contacts.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical" android:layout_width="match_parent"  
  4.     android:layout_height="match_parent">  
  5.     <TextView  
  6.         android:layout_width="match_parent"  
  7.         android:layout_height="wrap_content"  
  8.         android:text="这是通讯录页面"  
  9.         android:textSize="40sp"  
  10.         />  
  11. </LinearLayout>  

同样的页面,我们在写两个,在这里我就不再写了


接下来我们就是将页面转为Fragment了

WeiXinFragment.java

[html]  view plain  copy
  1. package com.example.test0615;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.annotation.Nullable;  
  5. import android.support.v4.app.Fragment;  
  6. import android.view.LayoutInflater;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9.   
  10. /**  
  11.  * Created by Administrator on 2017/6/15 0015.  
  12.  */  
  13.   
  14. public class WeiXinFragment extends Fragment {  
  15.     @Nullable  
  16.     @Override  
  17.     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {  
  18.         return inflater.inflate(R.layout.fragment_weixin,null);//方法的第一个参数为我们需要转化的页面  
  19.     }  
  20. }  


ContactsFragment.java

[html]  view plain  copy
  1. package com.example.test0615;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.annotation.Nullable;  
  5. import android.support.v4.app.Fragment;  
  6. import android.view.LayoutInflater;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9.   
  10. /**  
  11.  * Created by Administrator on 2017/6/15 0015.  
  12.  */  
  13.   
  14. public class ContactsFragment extends Fragment {  
  15.     @Nullable  
  16.     @Override  
  17.     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {  
  18.         return inflater.inflate(R.layout.fragment_contacts,null);  
  19.     }  
  20. }  

再建两个Java页面,将剩下的两个个页面转为Fragment


接下来就是代码的重中之重:

[html]  view plain  copy
  1. package com.example.test0615;  
  2.   
  3. import android.support.annotation.IdRes;  
  4. import android.support.v4.app.Fragment;  
  5. import android.support.v4.app.FragmentManager;  
  6. import android.support.v4.app.FragmentPagerAdapter;  
  7. import android.support.v4.view.PagerAdapter;  
  8. import android.support.v4.view.ViewPager;  
  9. import android.support.v7.app.AppCompatActivity;  
  10. import android.os.Bundle;  
  11. import android.view.View;  
  12. import android.widget.RadioButton;  
  13. import android.widget.RadioGroup;  
  14.   
  15. import java.util.ArrayList;  
  16. import java.util.List;  
  17.   
  18. public class MainActivity extends AppCompatActivity {  
  19.   
  20.     private ViewPager vp_main_viewpager;  
  21.     private RadioGroup rg_main_radio;  
  22.     //定义一个用来放Fragment的集合  
  23.     private List<Fragment> fragments=new ArrayList<>();  
  24.     //用来放View的集合  
  25.     private List<View> buttons;  
  26.   
  27.     @Override  
  28.     protected void onCreate(Bundle savedInstanceState) {  
  29.         super.onCreate(savedInstanceState);  
  30.         setContentView(R.layout.activity_main);  
  31.   
  32.         vp_main_viewpager = (ViewPager) findViewById(R.id.vp_main_viewpager);  
  33.         rg_main_radio = (RadioGroup) findViewById(R.id.rg_main_radio);  
  34.   
  35.         WeiXinFragment weiXinFragment=new WeiXinFragment();  
  36.         ContactsFragment contactsFragment=new ContactsFragment();  
  37.         FindFragment findFragment=new FindFragment();  
  38.         MyFragment myFragment=new MyFragment();  
  39.           
  40.         //将Fragment放入集合  
  41.         fragments.add(weiXinFragment);  
  42.         fragments.add(contactsFragment);  
  43.         fragments.add(findFragment);  
  44.         fragments.add(myFragment);  
  45.   
  46.         //设置适配器  
  47.         vp_main_viewpager.setAdapter(new MyAdapter(getSupportFragmentManager()));  
  48.   
  49.         //得到单选组的所有单选按钮  
  50.         buttons=rg_main_radio.getTouchables();  
  51.   
  52.         //给页面设置一个监听事件  
  53.         vp_main_viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {  
  54.             @Override  
  55.             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {  
  56.   
  57.             }  
  58.   
  59.             //页面滑动事件  
  60.             @Override  
  61.             public void onPageSelected(int position) {  
  62.                 //根据页面的位置拿到每个页面对应的单选按钮  
  63.                 RadioButton radioButton= (RadioButton) buttons.get(position);  
  64.                 //将该单选按钮设置为选中状态  
  65.                 radioButton.setChecked(true);  
  66.             }  
  67.   
  68.             @Override  
  69.             public void onPageScrollStateChanged(int state) {  
  70.   
  71.             }  
  72.         });  
  73.           
  74.         //给单选组设置点击事件监听  
  75.         rg_main_radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {  
  76.             @Override  
  77.             public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {  
  78.                 //如果当前单选按钮的ID为自己设置的ID  
  79.                 if(checkedId==R.id.rb_mian_one){  
  80.                     //设置当前展示的页面  
  81.                     vp_main_viewpager.setCurrentItem(0);  
  82.                 }else if(checkedId==R.id.rb_mian_two){  
  83.                     vp_main_viewpager.setCurrentItem(1);  
  84.                 }else if(checkedId==R.id.rb_mian_three){  
  85.                     vp_main_viewpager.setCurrentItem(2);  
  86.                 }else if(checkedId==R.id.rb_mian_four){  
  87.                     vp_main_viewpager.setCurrentItem(3);  
  88.                 }  
  89.             }  
  90.         });  
  91.     }  
  92.   
  93.     class MyAdapter extends FragmentPagerAdapter{  
  94.   
  95.         public MyAdapter(FragmentManager fm) {  
  96.             super(fm);  
  97.         }  
  98.   
  99.         @Override  
  100.         public Fragment getItem(int position) {  
  101.             return fragments.get(position);  
  102.         }  
  103.   
  104.         @Override  
  105.         public int getCount() {  
  106.             return fragments.size();  
  107.         }  
  108.     }  
  109. }  


5.Fragment生命周期

Fragment生命周期图

测试代码:

  1. package com.goso.testapp;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.ListFragment;  
  5. import android.os.Bundle;  
  6. import android.util.Log;  
  7. import android.view.LayoutInflater;  
  8. import android.view.View;  
  9. import android.view.ViewGroup;  
  10. import android.widget.ArrayAdapter;  
  11. import android.widget.ListView;  
  12.   
  13. /** 
  14.  * Demonstration of using ListFragment to show a list of items 
  15.  * from a canned array. 
  16.  */  
  17. public class FragmentListArray extends Activity {  
  18.   
  19.     @Override  
  20.     protected void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         Log.e("HJJ""Activity &&&& onCreate...");  
  23.         // Create the list fragment and add it as our sole content.  
  24.         if (getFragmentManager().findFragmentById(android.R.id.content) == null) {  
  25.             ArrayListFragment list = new ArrayListFragment();  
  26.             getFragmentManager().beginTransaction().add(android.R.id.content, list).commit();  
  27.         }  
  28.     }  
  29.   
  30.     @Override  
  31.     protected void onStart() {  
  32.         // TODO Auto-generated method stub  
  33.         super.onStart();  
  34.         Log.e("HJJ""Activity &&&& onStart...");  
  35.     }  
  36.       
  37.     @Override  
  38.     protected void onResume() {  
  39.         // TODO Auto-generated method stub  
  40.         super.onResume();  
  41.         Log.e("HJJ""Activity &&&& onResume...");  
  42.     }  
  43.       
  44.     @Override  
  45.     protected void onStop() {  
  46.         // TODO Auto-generated method stub  
  47.         super.onStop();  
  48.         Log.e("HJJ""Activity &&&& onStop...");  
  49.     }  
  50.       
  51.     @Override  
  52.     protected void onPause() {  
  53.         // TODO Auto-generated method stub  
  54.         super.onPause();  
  55.         Log.e("HJJ""Activity &&&& onPause...");  
  56.     }  
  57.       
  58.     @Override  
  59.     protected void onDestroy() {  
  60.         // TODO Auto-generated method stub  
  61.         super.onDestroy();  
  62.         Log.e("HJJ""Activity &&&& onDestroy...");  
  63.     }  
  64.       
  65.     public static class ArrayListFragment extends ListFragment {  
  66.   
  67.         @Override  
  68.         public void onAttach(Activity activity) {  
  69.             // TODO Auto-generated method stub  
  70.             Log.e("HJJ""ArrayListFragment **** onAttach...");  
  71.             super.onAttach(activity);  
  72.         }  
  73.           
  74.         @Override  
  75.         public void onCreate(Bundle savedInstanceState) {  
  76.             // TODO Auto-generated method stub  
  77.             Log.e("HJJ""ArrayListFragment **** onCreate...");  
  78.             super.onCreate(savedInstanceState);  
  79.         }  
  80.           
  81.         @Override  
  82.         public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  83.                 Bundle savedInstanceState) {  
  84.             // TODO Auto-generated method stub  
  85.             Log.e("HJJ""ArrayListFragment **** onCreateView...");  
  86.             return super.onCreateView(inflater, container, savedInstanceState);  
  87.         }  
  88.           
  89.         @Override  
  90.         public void onActivityCreated(Bundle savedInstanceState) {  
  91.             super.onActivityCreated(savedInstanceState);  
  92.             Log.e("HJJ""ArrayListFragment **** onActivityCreated...");  
  93.             String[] array = new String[]{"C++""JAVA""PYTHON"};  
  94.             setListAdapter(new ArrayAdapter<String>(getActivity(),  
  95.                     android.R.layout.simple_list_item_1, array));  
  96.         }  
  97.   
  98.         @Override  
  99.         public void onStart() {  
  100.             // TODO Auto-generated method stub  
  101.             Log.e("HJJ""ArrayListFragment **** onStart...");  
  102.             super.onStart();  
  103.         }  
  104.           
  105.         @Override  
  106.         public void onResume() {  
  107.             Log.e("HJJ""ArrayListFragment **** onResume...");  
  108.             // TODO Auto-generated method stub  
  109.             super.onResume();  
  110.         }  
  111.           
  112.         @Override  
  113.         public void onPause() {  
  114.             Log.e("HJJ""ArrayListFragment **** onPause...");  
  115.             // TODO Auto-generated method stub  
  116.             super.onPause();  
  117.         }  
  118.           
  119.         @Override  
  120.         public void onStop() {  
  121.             Log.e("HJJ""ArrayListFragment **** onStop...");  
  122.             // TODO Auto-generated method stub  
  123.             super.onStop();  
  124.         }  
  125.           
  126.         @Override  
  127.         public void onDestroyView() {  
  128.             Log.e("HJJ""ArrayListFragment **** onDestroyView...");  
  129.             // TODO Auto-generated method stub  
  130.             super.onDestroyView();  
  131.         }  
  132.           
  133.         @Override  
  134.         public void onDestroy() {  
  135.             // TODO Auto-generated method stub  
  136.             Log.e("HJJ""ArrayListFragment **** onDestroy...");  
  137.             super.onDestroy();  
  138.         }  
  139.           
  140.         @Override  
  141.         public void onDetach() {  
  142.             Log.e("HJJ""ArrayListFragment **** onDetach...");  
  143.             // TODO Auto-generated method stub  
  144.             super.onDetach();  
  145.         }  
  146.           
  147.         @Override  
  148.         public void onListItemClick(ListView l, View v, int position, long id) {  
  149.             Log.i("FragmentList""Item clicked: " + id);  
  150.         }  
  151.     }  
  152. }  

五、结果

[java]  view plain  copy
  1. onCreate过程  
  2. 01-22 15:30:28.091: E/HJJ(10315): Activity &&&& onCreate...  
  3. 01-22 15:30:28.091: E/HJJ(10315): ArrayListFragment **** onAttach...  
  4. 01-22 15:30:28.091: E/HJJ(10315): ArrayListFragment **** onCreate...  
  5. 01-22 15:30:28.115: E/HJJ(10315): ArrayListFragment **** onCreateView...  
  6. 01-22 15:30:28.123: E/HJJ(10315): ArrayListFragment **** onActivityCreated...  
  7.   
  8. onStart过程  
  9. 01-22 15:30:28.123: E/HJJ(10315): Activity &&&& onStart...  
  10. 01-22 15:30:28.123: E/HJJ(10315): ArrayListFragment **** onStart...  
  11.   
  12. onResume过程  
  13. 01-22 15:30:28.123: E/HJJ(10315): Activity &&&& onResume...  
  14. 01-22 15:30:28.123: E/HJJ(10315): ArrayListFragment **** onResume...  
  15.   
  16. onPause过程  
  17. 01-22 15:31:26.748: E/HJJ(10315): ArrayListFragment **** onPause...  
  18. 01-22 15:31:26.748: E/HJJ(10315): Activity &&&& onPause...  
  19.   
  20. onStop过程  
  21. 01-22 15:31:27.638: E/HJJ(10315): ArrayListFragment **** onStop...  
  22. 01-22 15:31:27.638: E/HJJ(10315): Activity &&&& onStop...  
  23.   
  24. onStart过程  
  25. 01-22 15:31:57.537: E/HJJ(10315): Activity &&&& onStart...  
  26. 01-22 15:31:57.537: E/HJJ(10315): ArrayListFragment **** onStart...  
  27.   
  28. onResume过程  
  29. 01-22 15:31:57.537: E/HJJ(10315): Activity &&&& onResume...  
  30. 01-22 15:31:57.537: E/HJJ(10315): ArrayListFragment **** onResume...  
  31.   
  32. onPause过程  
  33. 01-22 15:32:47.412: E/HJJ(10315): ArrayListFragment **** onPause...  
  34. 01-22 15:32:47.412: E/HJJ(10315): Activity &&&& onPause...  
  35.   
  36. onStop过程  
  37. 01-22 15:32:47.865: E/HJJ(10315): ArrayListFragment **** onStop...  
  38. 01-22 15:32:47.865: E/HJJ(10315): Activity &&&& onStop...  
  39.   
  40. onDestroy过程  
  41. 01-22 15:32:47.865: E/HJJ(10315): ArrayListFragment **** onDestroyView...  
  42. 01-22 15:32:47.865: E/HJJ(10315): ArrayListFragment **** onDestroy...  
  43. 01-22 15:32:47.865: E/HJJ(10315): ArrayListFragment **** onDetach...  
  44. 01-22 15:32:47.865: E/HJJ(10315): Activity &&&& onDestroy...  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值