Android Fragment 生命周期随方向变化的变化

android

1个回答

写回答

2746751716

2025-06-13 03:30

+ 关注

Android
Android

Android Fragment 生命周期随方向变化的变化

Android中的Fragment是一种可以嵌入到Activity中的组件,它可以管理自己的布局和生命周期。在Android开发中,我们经常需要处理屏幕方向的变化,而这种变化会对Fragment的生命周期产生一定的影响。本文将详细介绍Fragment在屏幕方向变化时的生命周期变化,并通过案例代码进行演示。

Fragment的生命周期

在深入讨论Fragment在屏幕方向变化时的生命周期变化之前,先回顾一下Fragment的常规生命周期。Fragment的生命周期包括以下几个重要的回调方法:

1. onAttach():当Fragment与Activity关联时调用。

2. onCreate():在Fragment被创建时调用。

3. onCreateView():在Fragment创建视图时调用。

4. onActivityCreated():在Fragment所在的Activity创建完成时调用。

5. onStart():在Fragment可见时调用。

6. onResume():在Fragment可交互时调用。

7. onPause():在Fragment失去焦点时调用。

8. onStop():在Fragment不可见时调用。

9. onDestroyView():在Fragment的视图被移除时调用。

10. onDestroy():在Fragment被销毁时调用。

11. onDetach():当Fragment与Activity解除关联时调用。

Fragment在屏幕方向变化时的生命周期变化

屏幕方向发生变化时,Activity会被销毁并重新创建,而Fragment也会受到影响。下面是Fragment在屏幕方向变化时的生命周期变化:

1. 当屏幕方向变化时,Activity会先调用Fragment的onPause()、onStop()和onDestroyView()方法,然后销毁并重新创建自身。

2. 在Activity重新创建后,Fragment会依次调用onAttach()、onCreate()和onCreateView()方法。

3. 接着,Fragment所在的Activity会调用Fragment的onActivityCreated()、onStart()和onResume()方法,Fragment变为可见且可交互状态。

4. 当再次发生屏幕方向变化时,重复上述过程。

案例代码

为了更好地理解Fragment在屏幕方向变化时的生命周期变化,下面给出一个简单的案例代码。

首先,在布局文件中添加一个FrameLayout用于显示Fragment:

<FrameLayout</p> Android:id="@+id/fragment_contAIner"

Android:layout_width="match_parent"

Android:layout_height="match_parent" />

然后,在Activity中添加如下代码:

public class MAInActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setcontentView(R.layout.activity_mAIn);

if (savedInstanceState == null) {

getSupportFragmentManager().beginTransaction()

.add(R.id.fragment_contAIner, new MyFragment())

.commit();

}

}

}

接着,创建一个MyFragment类,继承自Fragment,并重写相应的生命周期方法:

public class MyFragment extends Fragment {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Log.d("Fragment", "onCreate");

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup contAIner, Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_my, contAIner, false);

Log.d("Fragment", "onCreateView");

return view;

}

@Override

public void onActivityCreated(Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);

Log.d("Fragment", "onActivityCreated");

}

@Override

public void onStart() {

super.onStart();

Log.d("Fragment", "onStart");

}

@Override

public void onResume() {

super.onResume();

Log.d("Fragment", "onResume");

}

@Override

public void onPause() {

super.onPause();

Log.d("Fragment", "onPause");

}

@Override

public void onStop() {

super.onStop();

Log.d("Fragment", "onStop");

}

@Override

public void onDestroyView() {

super.onDestroyView();

Log.d("Fragment", "onDestroyView");

}

@Override

public void onDestroy() {

super.onDestroy();

Log.d("Fragment", "onDestroy");

}

@Override

public void onDetach() {

super.onDetach();

Log.d("Fragment", "onDetach");

}

}

在上述代码中,我们通过日志打印了Fragment的生命周期方法,以便观察其变化。

本文详细介绍了Android Fragment在屏幕方向变化时的生命周期变化,并通过案例代码进行了演示。了解Fragment的生命周期对于正确处理屏幕方向变化非常重要。希望本文能够帮助读者更好地理解和应用Fragment的生命周期。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号