问题标签 [fragment-lifecycle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
9144 浏览

android - LifeCycleAware Fragment 中的片段生命周期事件

我有一个生命周期感知片段和一个LifecycleObserver

以下是我的观察者类,它记录了所有片段事件的属性

我想收听片段特定的生命周期事件onDestroyViewonActivityCreated但这些事件不存在

Lifecycle.Event. 它仅包含活动事件。如何在我的观察者中监听片段事件

0 投票
5 回答
33964 浏览

android - 为什么片段中的 getContext() 有时会返回 null?

为什么getContext()有时会返回null?我将上下文LastNewsRVAdapter.java作为参数传递给。但LayoutInflater.from(context)有时会崩溃。我在游戏控制台上收到了一些崩溃报告。以下是崩溃报告。

这是LastNewsRVAdapter.java构造函数。

这是onCreateView片段内的代码

这是refresh片段内的方法

0 投票
1 回答
27 浏览

android - 在片段中区分首先与以下 onCreateView 的调用

可能这是一个众所周知的话题,但我没有找到任何“通用”的解决方案。

主要问题有两个:

  • 当 afragment被放入时backstackonSavedInstanceState永远不会被调用
  • 为什么不能实例化fragment's视图onCreate

在这一点上,我的问题是:因为fragment lifecycle经历了onCreateViewevery resume,并且因为我们不能实例viewsonCreate; 为什么views每次fragment显示时我们都必须重新创建?必须有一种方法,如Activitywith onCreate

我们可能会通过添加 aclass-scoped boolean并检查它是否有值来避免,但这意味着添加 anif并且这不是最好的解决方案。另一种解决方案可能是这个,但它也是一种解决方法,它也有一些限制。

是否有解决此问题的内置(或标准)解决方案?

0 投票
1 回答
789 浏览

android - 什么时候调用 onResume() 而不先调用 onStart() (片段生命周期)

onStart()是 Fragment 变得可见onResume()的时候,是 Fragment 变得可交互的时候。那么onResume()-> onPause()->onResume()循环何时会在不执行包含onStart()->onStop()循环的情况下执行?

fragment转换方面,替换将销毁起始片段,调用它的onPause()-> onStop() 以及其他与销毁相关的生命周期方法。如果过渡是替换但添加开始fragment**backStack**,它仍然会调用onPause()->onStop()除了没有完全破坏片段并将其与活动分离。在仅覆盖另一个片段的情况下,不会lifecycle执行起始片段的任何事件,因为它仍然存在只是不可见(另一个片段被绘制在它上面)。

我不确定什么时候onResume()会在没有 的情况下被调用onStart(),以及onPause()使用onStop()

编辑:连同已经在这里的答案,使用android分屏也会暂停片段而不停止它。

0 投票
3 回答
1777 浏览

android - 在 Android Oreo 8.0 中 onPause 之前调用的新 Fragment 的 onResume

我在使用 android Oreo 时遇到了麻烦。我的 MainActivity 有 4 个片段,当用户按下选项卡时它们会相互替换。现在的问题是,我在 onPause 的单例实例中保存了一个值。每当用户按下下一个选项卡时,就会在 onPause 之前调用该片段的 onResume,因此我无法正确地从单例中检索值。

0 投票
4 回答
3045 浏览

android - onDestroyView for Fragment 在 onStop 之后从未调用过

我的APP确实有多个片段和活动,这些活动中的大多数都持有不同的片段,这是为了让我的组件易于重用。当我将其他活动加载到活动堆栈时,我遇到了一个问题。

案例
启动ActivityA-->ActivityB-->ActivityC

所有这些活动都包含不同的片段,但问题是何时从其中的片段ActivityB启动时不会被调用,尽管 onStop 被调用。ActivityAActivityA onDestroyView

当我继续向堆栈应用程序添加太多活动时,我的应用程序允许从一个到另一个进行无限次数的导航,逐渐引发 OOM 异常。

在下面找到我用来将片段添加到片段回栈的代码。

0 投票
0 回答
44 浏览

android - 从 MainActivity 获取数据并在 Fragment 中处理

从 MainActivity 获取数据并在 Fragment 上处理时遇到问题。

起初,有4个片段。我正在使用TabLayoutViewPager。每当从 Tab 中选择一个片段时,它都会触发onPageSelected()方法。在这里,我实例化事务,并通过setArguments(). 在片段中,我在getArguments()成功的帮助下接收到字符串 URL,但是当我使用该 URL 从 API 检索数据时,fetchData()(using Volley)方法会忽略它。

下面是 onPageSelected() 方法

片段的 onCreateView()

最后,选择片段时的“有趣”日志文件

我的问题是为什么 if 语句调用了两次,尽管它在 Tab 中选择了一次?

我的版本可能是因为beginTransaction' 延迟,我的意思是,它不能像oncreateView()方法调用那样快地发送数据。这就是为什么首先执行else部分,然后在执行if部分时 RecyclerView 忽略它。

0 投票
1 回答
419 浏览

android - android.app.Application 无法在 clcik 上转换为 android.support.v4.app.FragmentActivity

我有一个实现 RecyclerView.Adapter 的类,并在 onBindViewHolder 中调用 onClick 侦听器来访问另一个片段。我有这个错误仍然存​​在并指向上下文。下面的代码片段:

我已经在全球范围内实施了我的上下文,并且被告知这不是好的做法。以下是我需要访问的完整课程和片段课程。

}

要访问的片段类

}

主要问题在 FragmentActivity... getSupportFragmentManager ....

0 投票
0 回答
70 浏览

android - 应该使用哪个回调来检测从屏幕上删除的 android 片段并且它不再可见

我使用 aFragmentTransaction在我的活动中显示我的片段,并将其添加到 backstack,如下所示:

当按下后退按钮时,我检查是否myFragment在顶部,如果是这样,我只需调用super.onBackPressed()从后堆栈中弹出它并显示前一个片段。

我想知道我的片段上的哪个事件/回调可以帮助我检测到它不再显示在活动中。

我使用onPause(), onDetach()and ... 但它们没有被触发(因为它被描述为https://stackoverflow.com/a/16252923/1080355

0 投票
4 回答
4557 浏览

android - 导航上的片段生命周期重叠

我有一个Activity应用程序,其中多个应用程序Fragments正在使用导航组件进行切换。当我在两个片段之间切换时,它们的onCreate()onDestroy()方法似乎重叠。因此,当片段访问相同的全局对象时,我很难为片段编写初始化和清理代码。

Framgent_A从到导航Fragment_B具有以下方法顺序:

Fragment_A.onDestroy()我反转我在Fragment_A.onCreate(). 在我希望事情被调用Fragment_B时处于中立状态。onCreate()然而,情况并非如此,因为Fragment_A.onDestroy()尚未调用。

Android上的重叠是正常的还是我在导航组件中配置了错误?有没有另一种方法可以实现我想要做的事情?我知道我可以将两者结合Fragments起来并使其工作,但我不希望任何一个 Fragment 彼此了解。对我来说,在创建时Framgnet_A仍然活着,应该替换时似乎很奇怪。Fragment_BFragment_BFragment_A

任何帮助是极大的赞赏!


编辑:

在调试时浏览源代码后,我发现在FragmentNavigator.navigate() FragmentTransaction.setReorderingAllowed()被调用,它允许重新排序操作,甚至允许在前onCreate()一个片段之前调用新片段onDestroy()。问题仍然存在,在下一个 Fragment 中初始化相同的全局状态之前,如何解决我在一个 Fragment 中正确清理全局状态的问题。