当前位置: 首页 > 知识库问答 >
问题:

当用户使用addfragment方法(而不是replace Fragment)按back键时,将调用哪个方法

卓学智
2023-03-14

我正在寻找答案,但无法找到以下答案。

  • 默认情况下,我已经加载了片段A。
  • 现在,我添加新的片段(B)与getFragmentManager(). getinTransaction(). add()和片段B是可见的
  • 用户向后按,FragmentManager将弹出片段B,片段A再次可见

所以我的问题是,当片段B被分离时,片段A中的哪个方法将被调用,我正在调试片段A中的所有onResume、onAttach,但看起来它没有被调用。

有一点,如果我们使用替换片段而不是添加片段,它将用片段生命周期运行提取,但是用“添加”方法,看起来像片段A仍然在屏幕上可见,所以无论如何检测片段A何时不再被片段B覆盖?

有什么想法吗?

共有2个答案

闻人宇定
2023-03-14

最后,我找到了处理“addfragment”的方法(请注意,当我们使用addfragment时,片段生命周期并不像“replace fragment”那样运行)。

在活动中,只需实现FragmentManager。OnBackbackChangedListener来处理后堆栈的更改,然后获取后堆栈的顶部片段以执行所需操作。

陆绍辉
2023-03-14

当用户将一个活动导航到片段,然后在生命周期以下调用

第一片段:onAttach

第一个片段:onCreate

第一个片段:onCreateView

第一个片段:onViewCreated

第一片段:onActivityCreated

第一片段: onStart

第一个片段:onResume

当用户导航第一个片段到第二个片段的情况下addtoback和add()然后下面的生命周期称为第二个片段:onAttach

第二个片段:onCreate

第二个片段:onCreateView

第二片段: onViewCreated

第二个片段:onActivityCreated

第二个片段:onStart

第二个片段:onResume

当用户在addtobackstack()和add()的情况下按回时,下面的生命周期称为第二个片段:on暂停

第二片段: onStop

第二个片段:onDestroyView

第二个片段:onDestroy

第二个片段:onDetach

当用户导航第一个片段到第二个片段的情况下addtoback堆栈和替换()然后下面的生命周期称为第二个片段:onAttach

第二个片段

第二个片段:onCreate

第一片段:暂停

第一片段: onStop

第一个片段:onDestroyView

第二个片段:onCreateView

第二片段: onViewCreated

第二个片段:onActivityCreated

第二个片段:onStart

第二个片段:onResume

当用户在addtobackstack()的情况下按back并替换时,则在名为SecondFragment:onPause的生命周期以下

第二片段: onStop

第二个片段:onDestroyView

第二个片段:onDestroy

第二个片段:onDetach

第一个片段:onCreateView

第一个片段:onViewCreated

第一片段:onActivityCreated

第一片段: onStart

第一个片段:onResume

 类似资料:
  • 我有一个JAVA类,它被视为托管bean。下面的代码是它的精简版本: 对recycleObjects(someObject)的调用在从JAVA代码调用时运行良好,但是当我在XPage上的一个名为TestError的按钮中从SSJS调用它时,我得到的消息是“State data not available for/TestError,因为在缓存中没有找到控件树。”按钮中的SSJS代码是: 其中WFS

  • 问题内容: 是否有一种方法可以使每次调用方法时都会被调用的“超级方法”,即使对于未定义的方法也是如此?有点像这样: 编辑- 细节:我有一个库,该库进行了很多更新,并且每次更新都变得晦涩难懂。为了简化我的工作流程,我正在使程序自动更新库(需要执行我想做的事情,我不会具体说明原因,但是我的程序可以与将来的更新一起使用)并且我有混淆映射与库一起下载时,我想制作一种例如称为的代理,然后在我调用它时,将获得

  • 问题内容: 根据Java Doc 该接口定义了一个单一方法,旨在包含在线程中执行的代码。将Runnable对象传递给Thread构造函数。 因此, 当我们执行HelloRunnable时,谁调用了内部run方法? 在类中,方法如下所示: 从这段代码中,我们可以看到start方法没有调用该方法。 问题答案: 在以下文档中正确声明: Java虚拟机调用此线程的方法 因此,正是JVM中的本机代码负责调用

  • 问题内容: 让我们看一下这段代码: 我希望这能打印出“孩子”,但结果是“父母”。为什么Java会改为调用父类,我该怎么做才能使其在子类中调用方法? 问题答案: 不会覆盖,因为它没有相同的形式参数。一个拿走,另一个拿走。因此,运行时的多态不会被应用,并且不会导致子类方法的执行。根据Java语言规范: 如果满足以下所有条件,则在类C中声明或由类C继承的实例方法从类C中 重写 另一个在类A中声明的方法:

  • 本文向大家介绍JavaScript取得键盘按下方向键是哪个的方法,包括了JavaScript取得键盘按下方向键是哪个的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript取得键盘按下方向键是哪个的方法。分享给大家供大家参考。具体如下: 这里通过创建一个event.keyCode对象,可有效获取键盘上的方向键,运行代码后,点击键盘上的任意方向键,网页会以Alert的方式返

  • 问题内容: 我在一个教程中找到了这个示例。 当我运行此程序时,我的hs.size()值为2 ..,并且equals方法仅被调用一次。有人解释了我何时在HashSet中调用equal()方法 当上述程序中的equal方法调用时 问题答案: 您的代码将调用的唯一一次。另一次调用方法将是对的类。 此答案说明何时由和何时调用方法。摘录: HashSet利用哈希码来加快处理速度。假定彼此相等的两个对象将具有