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


<<:  Alpine Linux Porting (一点九?)

>>:  Day17:【技术篇】SQL之其它常用语法

Day13-React 表单验证篇-使用第三方函式库 Formik 进行表单的验证

Formik 介绍 在进行实作之前,先来认识一下 Formik 吧~ 如标题所说,Formik 是一...

Powershell 入门之循环(上)

今天我们来看一下 powershell 中的循环。在 powershell 有两种循环,一种 for...

Day02 - 为什麽你需要 Next.js ?

为什麽你需要 Next.js ? 对於工程师来说选择用什麽样的技术,背後都是取决於商业策略需要什麽...

便利贴 App 专案介绍

Screenshot 专案介绍 相信大家都有用过便利贴吧!在开会讨论时便利贴是一个很好用的工具,不同...

[Day15] 学 Reactstrap 就离 React 不远了 ~ 用 Tooltips 熟悉 useState

前言 对刚接触到 useState 的人来说, 应该要多点练习机会, 就跟学语言一样, 多用多练习就...