Fragment和Activity

本文介绍Fragment与Activity之间的交互方式及生命周期关联。Fragment可通过getActivity()获取Activity实例,并使用其方法;Activity通过FragmentManager获取Fragment引用并调用其方法。两者生命周期紧密相关。
Fragment和Activity的交互  一个Fragment的实例总是和包含它的Activity直接相关。
  fragment可以通过getActivity() 方法来获得Activity的实例,然后就可以调用一些例如findViewById()之类的方法。
  如:
  View listView = getActivity().findViewById(R.id.list);
  但是注意调用getActivity()时,fragment必须和activity关联(attached to an activity),否则将会返回一个null。

  相似的,activity也可以获得一个fragment的引用,从而调用fragment中的方法。
  获得fragment的引用要用FragmentManager,之后可以调用findFragmentById() 或者 findFragmentByTag().
  比如:
  ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
Fragment和Activity的生命周期
  activity的声明周期直接影响到fragment的生命周期,比如activity生命周期的回调函数调用时,所有在其中的fragment的相同的回调函数会同时被调用。
  Fragment还有一些额外的生命周期回调函数:
onAttach()
  当fragment和activity被关联时调用。
onCreateView()
  当创建fragment的UI被初始化时调用。
onActivityCreated()
  当activity的onCreate()方法返回时调用。
onDestroyView()
  当fragment的UI被移除的时候调用。
onDetach()
  当fragment和activity去关联时调用。
### Android 中 Fragment Activity 的区别及使用场景 #### 基本概念 Activity 是 Android 应用中的一个独立屏幕,通常代表用户界面的一个完整部分。Fragment 则是 Activity 中的一部分 UI 或行为,可以将其视为模块化的子组件,用于增强或扩展 Activity 的功能[^1]。 #### 生命周期对比 Activity 的生命周期相对独立,包含 `onCreate()`、`onStart()`、`onResume()`、`onPause()`、`onStop()` `onDestroy()` 等方法。而 Fragment 的生命周期更加细粒度,除了与 Activity 类似的生命周期方法外,还额外包含了 `onAttach()`、`onCreateView()` `onViewCreated()` 等特有方法[^3]。 #### 入口点声明 Activity 需要在 `AndroidManifest.xml` 文件中进行声明,才能作为应用的入口点或导航目标。而 Fragment 不需要在清单文件中声明,可以直接通过代码动态加载到 Activity 中[^2]。 #### 使用场景 - **Activity**:适用于定义独立的用户交互界面,例如登录页面、主屏幕等。它是整个应用的基础构建块。 - **Fragment**:适用于模块化设计,尤其在平板设备或多窗口布局中,Fragment 能够灵活地复用组合 UI 元素。例如,在一个新闻应用中,左侧列表可以选择文章,右侧显示文章内容,这种布局可以通过两个 Fragment 实现。 #### 示例代码 以下是一个简单的示例,展示如何在 Activity 中加载 Fragment: ```java // 创建一个简单的 Fragment public class ExampleFragment extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_example, container, false); } } // 在 Activity 中加载 Fragment FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); ExampleFragment exampleFragment = new ExampleFragment(); fragmentTransaction.add(R.id.fragment_container, exampleFragment); fragmentTransaction.commit(); ``` 上述代码展示了如何创建一个 Fragment,并将其添加到 Activity 的布局容器中[^2]。 #### 总结 Activity Fragment 是 Android 开发中相辅相成的两个组件。Activity 提供了独立的屏幕结构,而 Fragment 则增强了灵活性可复用性。开发者应根据具体需求选择合适的组件来构建高效的应用程序。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值