最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)例講解Android應(yīng)用開(kāi)發(fā)中Fragment生命周期的控制

 更新時(shí)間:2016年02月25日 15:36:42   作者:hjj0212  
這篇文章主要介紹了Android應(yīng)用開(kāi)發(fā)中Fragment生命周期的控制,Fragment依賴于Activity,所以生命周期方面也受Activity的影響,需要的朋友可以參考下

一、Fragment的生命周期初探

因?yàn)镕ragment必須嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相關(guān)的。

如果Activity是暫停狀態(tài),其中所有的Fragment都是暫停狀態(tài);如果Activity是stopped狀態(tài),這個(gè)Activity中所有的Fragment都不能被啟動(dòng);如果Activity被銷毀,那么它其中的所有Fragment都會(huì)被銷毀。

但是,當(dāng)Activity在活動(dòng)狀態(tài),可以獨(dú)立控制Fragment的狀態(tài),比如加上或者移除Fragment。

當(dāng)這樣進(jìn)行fragment transaction(轉(zhuǎn)換)的時(shí)候,可以把fragment放入Activity的back stack中,這樣用戶就可以進(jìn)行返回操作。

使用Fragment時(shí),需要繼承Fragment或者Fragment的子類(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment),所以Fragment的代碼看起來(lái)和Activity的類似。

每當(dāng)創(chuàng)建一個(gè)Fragment時(shí),首先添加以下三個(gè)回調(diào)方法:

onCreate():系統(tǒng)在創(chuàng)建Fragment的時(shí)候調(diào)用這個(gè)方法,這里應(yīng)該初始化相關(guān)的組件,一些即便是被暫停或者被停止時(shí)依然需要保留的東西。
onCreateView():當(dāng)?shù)谝淮卫L制Fragment的UI時(shí)系統(tǒng)調(diào)用這個(gè)方法,該方法將返回一個(gè)View,如果Fragment不提供 UI也可以返回null。注意,如果繼承自ListFragment,onCreateView()默認(rèn)的實(shí)現(xiàn)會(huì)返回一個(gè)ListView,所以不用自己 實(shí)現(xiàn)。
onPause():當(dāng)用戶離開(kāi)Fragment時(shí)第一個(gè)調(diào)用這個(gè)方法,需要提交一些變化,因?yàn)橛脩艉芸赡懿辉俜祷貋?lái)。
將Fragment加載到Activity當(dāng)中有兩種方式:

方式一:添加Fragment到Activity的布局文件當(dāng)中
方式二:在Activity的代碼中動(dòng)態(tài)添加Fragment(薦)
第一種方式雖然簡(jiǎn)單但靈活性不夠。添加Fragment到Activity的布局文件當(dāng)中,就等同于將Fragment及其視圖與activity的視圖綁定在一起,且在activity的生命周期過(guò)程中,無(wú)法切換fragment視圖。

第二種方式比較復(fù)雜,但也是唯一一種可以在運(yùn)行時(shí)控制fragment的方式(加載、移除、替換)。

二、生命周期控制實(shí)例

package com.goso.testapp;

import android.app.Activity;
import android.app.ListFragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;

/**
 * Demonstration of using ListFragment to show a list of items
 * from a canned array.
 */
public class FragmentListArray extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.e("HJJ", "Activity &&&& onCreate...");
    // Create the list fragment and add it as our sole content.
    if (getFragmentManager().findFragmentById(android.R.id.content) == null) {
      ArrayListFragment list = new ArrayListFragment();
      getFragmentManager().beginTransaction().add(android.R.id.content, list).commit();
    }
  }

  @Override
  protected void onStart() {
   // TODO Auto-generated method stub
   super.onStart();
   Log.e("HJJ", "Activity &&&& onStart...");
  }
  
  @Override
  protected void onResume() {
   // TODO Auto-generated method stub
   super.onResume();
   Log.e("HJJ", "Activity &&&& onResume...");
  }
  
  @Override
  protected void onStop() {
   // TODO Auto-generated method stub
   super.onStop();
   Log.e("HJJ", "Activity &&&& onStop...");
  }
  
  @Override
  protected void onPause() {
   // TODO Auto-generated method stub
   super.onPause();
   Log.e("HJJ", "Activity &&&& onPause...");
  }
  
  @Override
  protected void onDestroy() {
   // TODO Auto-generated method stub
   super.onDestroy();
   Log.e("HJJ", "Activity &&&& onDestroy...");
  }
  
  public static class ArrayListFragment extends ListFragment {

   @Override
   public void onAttach(Activity activity) {
   // TODO Auto-generated method stub
   Log.e("HJJ", "ArrayListFragment **** onAttach...");
   super.onAttach(activity);
   }
   
   @Override
   public void onCreate(Bundle savedInstanceState) {
   // TODO Auto-generated method stub
   Log.e("HJJ", "ArrayListFragment **** onCreate...");
   super.onCreate(savedInstanceState);
   }
   
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
   // TODO Auto-generated method stub
   Log.e("HJJ", "ArrayListFragment **** onCreateView...");
   return super.onCreateView(inflater, container, savedInstanceState);
   }
   
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
      super.onActivityCreated(savedInstanceState);
      Log.e("HJJ", "ArrayListFragment **** onActivityCreated...");
      String[] array = new String[]{"C++", "JAVA", "PYTHON"};
      setListAdapter(new ArrayAdapter<String>(getActivity(),
          android.R.layout.simple_list_item_1, array));
    }

    @Override
    public void onStart() {
     // TODO Auto-generated method stub
     Log.e("HJJ", "ArrayListFragment **** onStart...");
     super.onStart();
    }
    
    @Override
    public void onResume() {
     Log.e("HJJ", "ArrayListFragment **** onResume...");
     // TODO Auto-generated method stub
     super.onResume();
    }
    
    @Override
    public void onPause() {
     Log.e("HJJ", "ArrayListFragment **** onPause...");
     // TODO Auto-generated method stub
     super.onPause();
    }
    
    @Override
    public void onStop() {
     Log.e("HJJ", "ArrayListFragment **** onStop...");
     // TODO Auto-generated method stub
     super.onStop();
    }
    
    @Override
    public void onDestroyView() {
     Log.e("HJJ", "ArrayListFragment **** onDestroyView...");
     // TODO Auto-generated method stub
     super.onDestroyView();
    }
    
    @Override
    public void onDestroy() {
     // TODO Auto-generated method stub
     Log.e("HJJ", "ArrayListFragment **** onDestroy...");
     super.onDestroy();
    }
    
    @Override
    public void onDetach() {
     Log.e("HJJ", "ArrayListFragment **** onDetach...");
     // TODO Auto-generated method stub
     super.onDetach();
    }
    
    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
      Log.i("FragmentList", "Item clicked: " + id);
    }
  }
}

結(jié)果:
onCreate過(guò)程

01-22 15:30:28.091: E/HJJ(10315): Activity &&&& onCreate...
01-22 15:30:28.091: E/HJJ(10315): ArrayListFragment **** onAttach...
01-22 15:30:28.091: E/HJJ(10315): ArrayListFragment **** onCreate...
01-22 15:30:28.115: E/HJJ(10315): ArrayListFragment **** onCreateView...
01-22 15:30:28.123: E/HJJ(10315): ArrayListFragment **** onActivityCreated...

onStart過(guò)程

01-22 15:30:28.123: E/HJJ(10315): Activity &&&& onStart...
01-22 15:30:28.123: E/HJJ(10315): ArrayListFragment **** onStart...

onResume過(guò)程

01-22 15:30:28.123: E/HJJ(10315): Activity &&&& onResume...
01-22 15:30:28.123: E/HJJ(10315): ArrayListFragment **** onResume...

onPause過(guò)程

01-22 15:31:26.748: E/HJJ(10315): ArrayListFragment **** onPause...
01-22 15:31:26.748: E/HJJ(10315): Activity &&&& onPause...

onStop過(guò)程

01-22 15:31:27.638: E/HJJ(10315): ArrayListFragment **** onStop...
01-22 15:31:27.638: E/HJJ(10315): Activity &&&& onStop...

onStart過(guò)程

01-22 15:31:57.537: E/HJJ(10315): Activity &&&& onStart...
01-22 15:31:57.537: E/HJJ(10315): ArrayListFragment **** onStart...

onResume過(guò)程

01-22 15:31:57.537: E/HJJ(10315): Activity &&&& onResume...
01-22 15:31:57.537: E/HJJ(10315): ArrayListFragment **** onResume...

onPause過(guò)程

01-22 15:32:47.412: E/HJJ(10315): ArrayListFragment **** onPause...
01-22 15:32:47.412: E/HJJ(10315): Activity &&&& onPause...

onStop過(guò)程

01-22 15:32:47.865: E/HJJ(10315): ArrayListFragment **** onStop...
01-22 15:32:47.865: E/HJJ(10315): Activity &&&& onStop...

onDestroy過(guò)程

01-22 15:32:47.865: E/HJJ(10315): ArrayListFragment **** onDestroyView...
01-22 15:32:47.865: E/HJJ(10315): ArrayListFragment **** onDestroy...
01-22 15:32:47.865: E/HJJ(10315): ArrayListFragment **** onDetach...
01-22 15:32:47.865: E/HJJ(10315): Activity &&&& onDestroy...

相關(guān)文章

  • Android開(kāi)發(fā)之模仿微信打開(kāi)網(wǎng)頁(yè)的進(jìn)度條效果(高仿)

    Android開(kāi)發(fā)之模仿微信打開(kāi)網(wǎng)頁(yè)的進(jìn)度條效果(高仿)

    這篇文章主要介紹了Android開(kāi)發(fā)之模仿微信打開(kāi)網(wǎng)頁(yè)的進(jìn)度條效果(高仿)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • Android控件動(dòng)態(tài)用法實(shí)例分析

    Android控件動(dòng)態(tài)用法實(shí)例分析

    這篇文章主要介紹了Android控件動(dòng)態(tài)用法,以實(shí)例形式較為詳細(xì)的分析了Android控件動(dòng)態(tài)的具體編程實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Jetpack?Compose?實(shí)現(xiàn)一個(gè)圖片選擇框架功能

    Jetpack?Compose?實(shí)現(xiàn)一個(gè)圖片選擇框架功能

    這篇文章主要介紹了Jetpack?Compose?實(shí)現(xiàn)一個(gè)圖片選擇框架,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Android 如何實(shí)現(xiàn)動(dòng)態(tài)申請(qǐng)權(quán)限

    Android 如何實(shí)現(xiàn)動(dòng)態(tài)申請(qǐng)權(quán)限

    這篇文章主要介紹了Android 如何實(shí)現(xiàn)動(dòng)態(tài)申請(qǐng)權(quán)限。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Android 編程下的計(jì)時(shí)器代碼

    Android 編程下的計(jì)時(shí)器代碼

    在安卓 APP 的手機(jī)號(hào)注冊(cè)邏輯中,經(jīng)常會(huì)有將激活碼發(fā)送到手機(jī)的環(huán)節(jié),這個(gè)環(huán)節(jié)中絕大多數(shù)的應(yīng)用考慮到網(wǎng)絡(luò)延遲或服務(wù)器壓力以及短信服務(wù)商的延遲等原因,會(huì)給用戶提供一個(gè)重新獲取激活碼的按鈕
    2013-08-08
  • 深入理解Android 5.0中的Toolbar

    深入理解Android 5.0中的Toolbar

    相信大家都有所體會(huì),搜索Toolbar相關(guān)文章滿天飛,但是大都不是很全面,每次要用到的時(shí)候又要重頭過(guò)濾一遍。而且隨著版本升級(jí)很多較早的文章的方法已經(jīng)失效,最近剛好好用到Toolbar,就將相關(guān)配置整理下,方便以后需要的時(shí)候或者有需要的朋友們參考學(xué)習(xí)。
    2017-01-01
  • Android中使用ListView模擬微信好友功能

    Android中使用ListView模擬微信好友功能

    這篇文章主要介紹了Android中使用ListView模擬微信好友功能,需要的朋友可以參考下
    2017-08-08
  • DownloadManager實(shí)現(xiàn)文件下載功能

    DownloadManager實(shí)現(xiàn)文件下載功能

    這篇文章主要為大家詳細(xì)介紹了DownloadManager實(shí)現(xiàn)文件下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • loadavg數(shù)據(jù)異常引發(fā)問(wèn)題起源分析

    loadavg數(shù)據(jù)異常引發(fā)問(wèn)題起源分析

    這篇文章主要為大家介紹了loadavg數(shù)據(jù)異常引發(fā)問(wèn)題起源分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android TextView添加超鏈接的方法示例

    Android TextView添加超鏈接的方法示例

    這篇文章主要介紹了Android TextView添加超鏈接的方法,結(jié)合實(shí)例形式分析了TextView控件添加HTML超鏈接的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-10-10

最新評(píng)論

东光县| 大名县| 托克逊县| 广宁县| 鄂托克前旗| 嘉祥县| 芒康县| 时尚| 凌海市| 城市| 堆龙德庆县| 博兴县| 雷州市| 青神县| 普安县| 西乡县| 财经| 西乌珠穆沁旗| 铅山县| 阿拉善左旗| 东城区| 皋兰县| 惠州市| 保德县| 麦盖提县| 武定县| 阳信县| 图片| 广饶县| 左云县| 龙里县| 新巴尔虎右旗| 双流县| 和龙市| 三河市| 奉节县| 万安县| 格尔木市| 会同县| 昔阳县| 桐乡市|