Fragment操作方法和生命周期的关系

 

       相信对Android开发比较熟悉的同学或多或少都用到过Fragment,Fragment附着在Activity上,有自己独特的生命

周期。FragmentTransaction提供了很多操作Fragment的方法,如add()、replace()、attach()等,调用这些方法会触发

Fragment不同的生命周期。调用了这些方法却不知道Fragment当前处于什么状态是一件危险的事情,因此,有必要

对Fragment的操作方法和生命周期的对应关系理一理。

       通过FragmentTransaction操作Fragment主要有以下几种方式:

add()

添加一个Fragment到Activity中

remove()

从Activity中移除一个Fragment,如果被移除的Fragment没有被添加到回退栈,这个Fragment实例将会被销毁。

replace()

使用另一个Fragment替换当前的,实际上是先调用remove()再调用add()

hide()

隐藏当前的Fragment,设置为不可见,但是并不会销毁

show()

显示之前隐藏的Fragment,设置为可见

detach()

将Fragment从Activity中分离,会销毁其View,但不会销毁Fragment的实例

attach()

将从Activity中分离的Fragment,重新关联到Activity,重新创建View

       总体看来,Fragment的操作方式主要可以分为两类:

显示:add() 、replace() 、show() 、attach()

隐藏:remove() 、hide() 、detach()

       下面通过例子来详细分析这几种方法的不同。

1、add方法

 

public class MainActivity extends FragmentActivity {

    FragmentA fragmentA = new FragmentA();
    FragmentB fragmentB = new FragmentB();
    private Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.add(R.id.main_framelayout, fragmentA);
        fragmentTransaction.commit();

        btn = (Button) findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.add(R.id.main_framelayout, fragmentB);
             
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在Android开发中,Fragment是一个可重用的UI部分,它可以独立于Activity存在,并且可以根据需要添加到不同的Activity中。Fragment有自己的生命周期管理,这包括一系列的方法,用于描述Fragment从创建、显示、活跃到销毁的整个过程。 1. **onCreate()**: 当Fragment实例被创建时调用,这是初始化阶段,可以在此设置基本属性和数据。 2. **onCreateView()**: 如果Fragment没有预先创建视图,这个方法被调用来生成视图。返回null则使用默认布局。 3. **onStart()**: 当Fragment成为活动焦点或可见时调用,可以在这里开始执行耗时操作。 4. **onResume()**: 当Fragment变为活动的前景或者用户正在交互时,这个方法被调用,意味着它是完全活跃的。 5. **onPause()**: 当Fragment不再接收用户交互或成为活动焦点时,但依然可见时,这个方法被调用。 6. **onStop()**: 当Fragment失去焦点并且不处于可见状态时,例如切换到其他Activity,这个方法被调用。 7. **onDestroyView()**: 当Fragment的视图不再需要时,这个方法被调用,通常在onPause之后。 8. **onSaveInstanceState()**: 在onPause或onStop之前调用,用于保存Fragment的状态,以便在恢复时使用。 9. **onDestroy()**: 当Fragment被系统卸载,不再需要内存时,这个方法被调用。 10. **onActivityCreated()**: 当Fragment的视图已经创建完毕,并且所有的依赖项都可用时,这个方法被调用。 11. **onDestroyView()**: 视图销毁后调用,释放资源。 12. **onDetach()**: 当Fragment从其宿主Activity中分离出来时,这个方法被调用,通常发生在用户切换回其他Activity时。 理解Fragment生命周期对于管理其行为、数据和资源至关重要。开发者可以根据这些阶段进行必要的资源管理、数据保存和状态更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值