第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

淺談FragmentManager與fragment之一二事

標(biāo)簽:
Java Android

图片描述

  • 首先,在讨论彼此关系之前我们先回顾下fragment的生命周期,尽管它看起来跟我们熟知的activity很相似,一个关键的区别在于fragment的生命周期方法是由托管activity而不是操作系统调用的,因为操作系统无法得知Activity用来管理视图的fragment,fragment的使用是在Activity它自己内部处理。
  • FragmentManager是负责管理fragment并将它们的视图添加到activity的视图层级结构中,考虑到Honeycomb以前版本的兼容性问题,这里使用支持库类FragmentActivity(android.support.v4.app.Fragment.Activity),通过继承FragmentActivity类,调用getSupportFragmentManager()获取FragmentManager。


注意⚠️:在Honeycomb及后续的Android版本中,Activity的所有子类都知道如何管理fragment,我们可以直接使用标准库种的原生fragment类。如果大家觉得自己是为最新版本设备开发应用的话就没必要使用支持库,但代码需要有如下修改:

1.放弃使用FragmentActivity类,转而使用标准库中的Activity(android.app.Activity)-->activity默认支持API在11以上版本中的fragment;
2.放弃使用android.support.v4.app.Fragment类,转而使用android.app.Fragment类;
3.放弃使用getSupportFragmentManager()方法获取FragmentManager,转而使用getFragmentManager()方法。


public class CrimeActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_crime);
        FragmentManager manager = getSupportFragmentManager();
        Fragment fragment = manager.findFragmentById(R.id.fragmentContainer);

        if (fragment == null) {
            fragment = new CrimeFragment();
            manager.beginTransaction()
                .add(R.id.fragmentContainer, fragment)
                .commit();
        } 
    }
  • 唠叨了这么多,我们以一段代码为例子开始进入正题吧,activity的FragmentManager负责调用队列中fragment的生命周期方法。添加fragment供FragmentManager管理时,onAttach(Activity)、onCreate(Bundle)以及onCreateView(...)方法会被调用。托管activity的onCreate(...)方法执行后,onActivityCreated(...)方法也会被调用。因为我们正向CrimeActivity.onCreate(...)方法添加CrimeFragment,所以fragment被添加后,该方法会被调用。

  • 在activity处于停止,暂停或运行状态下时,添加fragment会发生什么呢?此种情况下,FragmentManager立即驱使fragment快速跟上activity的步伐,直到与activity的最新状态保持同步。例如,向处于运行状态的activity中添加fragment时,以下fragment生命周期方法会被依次调用:onAttach(Activity)、onCreate(Bundle)、onCreateView(...)、onActivityCreated(Bundle)、onStart(),以及onResume()方法。

  • 只要fragment的状态与activity的状态保持了同步,托管activity的FragmentManager便会继续调用其他生命周期方法以继续保持fragment与activity的状态一致,而几乎就在同时,它接受到了从操作系统发出的相应调用。但fragment方法究竟是在activity方法之前还是之后调用的这一点却是无法保证的哦~
點(diǎn)擊查看更多內(nèi)容
6人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消