iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
Mobile Development

Android 新手入門學習系列 第 15

Day15 Android - fragment介紹

fragment,中文有分段、碎片的意思,可透過activity中,加入、切換多個不同的fragment,效果就類似於play商店畫面切換的部分,為你推薦的按鈕按下去顯示的是A fragment的內容,而熱門排行榜的按鈕點下去顯示的是B fragment的內容,中間那塊就是類似於fragment的部分,而fragment也跟activity一樣有它自己的生命週期,在每次狀態改變時,就執行不同的狀態流程,接著就先提提有關"生命週期"。

生命週期

首先先看到Fragment的生命週期圖
https://ithelp.ithome.com.tw/upload/images/20210828/20139259AC44Ewdyin.png
取自:Android Developers
其中比較常見的是onCreate及onCreateView,那麼就先講onCreate。

onCreate

首先onAttach在Fragment與Activity關聯時已調用,而onCreate主要用於保存過去任何的狀態,他會去接收一個bundle的savedInstancestate值,在開始進入這個活動周期時,會使用的方法來還原狀態,而這個值在初次創建時為空值。

@Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState); 
    }  

onCreateView

onCreateView這個方法主要是可以透過使用LayoutInflater內的inflate方法,將你所設定的布局包裝成一個view(視圖)並使用,跟setContentView類似,而在fragment中因為是繼承自fragment,而不是繼承AppCompactActivity,所以沒有setContentView方法。

@Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
            Bundle savedInstanceState) {    
        // ---Inflate the layout for this fragment---  
        return inflater.inflate(R.layout.fragment, container, false);  
    }  

而onViewCreated則是在onCreateView之後觸發的事件。


onViewStateRestored

在建立完View之後,此狀態代表Fragment、Activity已創建好,並且視圖View的可見狀態會保留、可使用Activity的資源。

@Override
    public void onViewStateRestored(Bundle savedInstanceState){
        super.onViewStateRestored(savedInstanceState);
    }

onStart

Fragment完成創立後(Created),在原activity中使用FragmentManager+FragmentTransaction的方法來使其可見,若創立的view非空,就會把生命週期已到Started。

@Override  
    public void onStart() {  
        super.onStart(); 
    }  

onResume

當Fragment可見、效果皆已完成並且正在使用時,生命週期將移至Resumed調用onResume()方法,指示用戶可以與Fragment進行交互的適當信號,像是View等,調用onResume()方法則完成交互。

 @Override  
    public void onResume() {  
        super.onResume();  
    }  

onPause

當用戶離開Fragment但Fragment可見時,會將Fragment與View的生命週期移至Paused,並調用onPause()方法。

@Override  
    public void onPause() {  
        super.onPause();  
    }  

onStop

當Fragment已停止,會向觀察者發出onStop事件,狀態轉換可能由父Activity或Fragment停止觸發,會在保存狀態前調用的事件。

@Override  
    public void onStop() {  
        super.onStop();  
    }  

onDestroyView

當Fragment即將被結束、保存,就會執行onDestroyView這個方法,getViewLifecycleOwnerLiveData()將返回空值,他會刪除onCreateView產生視圖的所有引用。

  @Override  
    public void onDestroyView() {  
        super.onDestroyView();  
    }  

onDestroy

Fragment與Activity不再綁定,資源將被釋放。

    @Override  
    public void onDestroy() {  
        super.onDestroy();  
    }  

接著就可以透過加入Logcat來將不同的狀態執行觀察,另外如果有需要了解Activity活動的生命週期,可以點選這篇文章,且可以做結合觀察。
更多:Android Developers


上一篇
Day14 Android - Logcat(日誌)
下一篇
Day16 Android - 不同fragment切換(ButtomNavigationView)
系列文
Android 新手入門學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言