Android技术栈(一)从Activity迁移到Fragment

本文详细解释了Fragment在Android中的生命周期管理,包括其与Activity的关系,onPause和onHiddenChanged的区别,以及如何在Fragment不显示时处理逻辑。此外,文章还介绍了如何使用FragmentTransaction进行操作,以及在AndroidX时代如何处理Fragment的回退栈和onBackPressed回调。
摘要由CSDN通过智能技术生成

首先要提一点,如果你要学习Fragment那么你至少得是掌握了Activity的,如果你还不了解Activity,笔者建议你先去看一些Activity相关的文章,再来进阶Fragment.从下面的文章开始,默认读者已经了解了Activity的生命周期等相关知识。

Fragment拥有Activity所有的生命周期回调函数并且由于自身特点还扩展了一些回调函数,但是这些与Activity相关的回调函数几乎只与Fragment依附的Activity有关,如果不熟悉Fragment,很容易凭直觉造成误会.例如,一个Fragment并不会因为在Fragment回退栈上有其他Fragment把它盖住,又或者是你使用FragmentTransition将它hide而导致他onPause,onPause只跟此Fragment依附的Activity有关,这在Fragment的源码中写得清清楚楚.

/**

  • Called when the Fragment is no longer resumed. This is generally
  • tied to {@link Activity#onPause() Activity.onPause} of the containing
  • Activity’s lifecycle.
    */
    @CallSuper
    public void onPause() {
    mCalled = true;
    }

那当我们想在Fragment不显示时做一些事情要怎么办呢?我们有onHiddenChanged回调,当Fragment的显示状态通过FragmentTransition改变时(hideshow),就会回调这个函数,参数hidden将告诉你这个Fragment现在是被隐藏还是显示着.

/**

  • Called when the hidden state (as returned by {@link #isHidden()} of
  • the fragment has changed. Fragments start out not hidden; this will
  • be called whenever the fragment changes state from that.
  • @param hidden True if the fragment is now hidden, false otherwise.
    */
    public void onHiddenChanged(boolean hidden) {
    }

Fragment有两种方式生成,一是硬编码到xml文件中,二是在Java代码中new,然后通过FragmentManager#beginTransaction开启FragmentTransaction提交来添加Fragment(下文会介绍).两种方式存在着一定区别.硬编码到xmlFragment无法被FragmentTransition#remove移除,与Activity同生共死,所以你要是这么用了,就不用试了,移除不了的,但是在代码中new出来的是可以被移除的.

硬编码到xml中:

添加Fragment的第二种方式就是使用Frag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值