【问题标题】:Fragment onResume not called片段 onResume 未调用
【发布时间】:2013-03-13 10:45:35
【问题描述】:

我有 4 个(比如说 1、2、3 和 4 个)片段。并且一次它们中的任何一个都将对用户可见。在第二个片段中,我想在用户使用它时做一些事情。 现在,当用户导航到第三个片段并点击后退按钮时,我想运行一些代码。我的问题是onResume 在用户点击后退按钮并进入第二个片段时没有被调用。

【问题讨论】:

  • 尝试使用onAttach()方法,而不是onResume()
  • 已经试过了....实际上 OnAttch() 在我们从片段活动中附加它时只被调用一次。
  • 你是如何在片段之间切换的?请添加一些示例代码。
  • 您是替换还是添加新片段?另请注意,根据官方文档“片段 onResume() 通常与包含 Activity 生命周期的 Activity.onResume 相关联。”

标签: android android-fragments android-fragmentactivity onresume


【解决方案1】:

我最近遇到了同样的问题,我知道为时已晚,但以防万一其他人正在寻找这个,这是我的答案:

感谢 @fasteque 缩小我的搜索范围。

片段onResume()onPause() 只会在活动onResume()onPause() 被调用时被调用。它们与 Activity 紧密耦合。

但是,如果您仍然想听听活动中的变化,例如哪个片段在顶部,并相应地触发事件,您可能想看看FragmentManager.OnBackStackChangedListener

希望这会有所帮助:)

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。如果您想从第三个片段切换到第二个片段(使用后退按钮或其他方式),您可以在第三个片段的 onPause 中调用第二个片段。

    @Override
    public void onPause() {
        super.onPause();
    
         Fragment2 fragment2= (Fragment2) getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment2);
         if (fragment2!= null) {
             //you can call any function from fragment2
             fragment2.SomeFunctions();
         }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-11
      • 2018-06-17
      • 1970-01-01
      • 2021-09-08
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多