【问题标题】:Android: Method in Fragment LifecycleAndroid:片段生命周期中的方法
【发布时间】:2026-02-05 10:55:02
【问题描述】:

我正在寻找 Fragment Lifecycle 中的方法,但不确定是哪一个。

这是我的情况:我在 ViewPager 中有一个片段。 Fragment 显示一个包含一些信息的列表。我在 Fragment 的onCreateView() 中填写列表。当用户打开不同的 Activity(本例中为设置)并更改某些设置时,Fragment 中的 List 必须显示的信息会更改。当用户使用 Back-button 返回 Fragment 时,onCreateView() 不会被重新调用,因此 List 中的信息不会更新。

我的问题是:onCreateView()-方法在用户从不同的 Activity 返回到片段时不会被调用,但是这里调用的是哪个方法?我需要知道这一点,因为这样我就可以在该方法中填写列表。

提前致谢!

【问题讨论】:

  • onResume 呢?
  • @vmironov onResume() 是在第一次创建 Fragment 时调用还是仅在用户返回时调用?
  • 是的,在创建 Fragment 时也会调用它
  • 好的,谢谢,那应该可以了。我试试看。

标签: java android android-fragments android-viewpager android-lifecycle


【解决方案1】:

重要且不明显的一点是,Fragment 的 onCreateView() 不仅会在您使用此 Fragment 选择 Tab 的情况下被调用。所以在使用ViewPager()时不要依赖Fragment的onCreateView()。当您选择 Tab 时,Android 会创建 sible 视图(缓存它们)或制作类似的东西。

当用户在 ViewPager 中选择正确的选项卡时,您应该调用您的更新方法(不记得确切,但希望它有所帮助)。

【讨论】:

  • 我会记住这一点,但现在,我只在 onCreateView() 中调用 findViewById(),所以我敢打赌这不会有问题,对吧?
  • 使用 findViewById() - 没有问题,因为您只需创建对某些视图的引用。如果您进行一些 UI 刷新,或者特别是耗时的逻辑,可能会发生意外的行为,因为它可能会比您预期的更早运行。
【解决方案2】:

onResume() 是简单的答案,当用户回来时调用。有关更多详细信息,请参阅此处的生命周期FragmentLifecycle

【讨论】: