问题标签 [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.
android - LifeCycleAware Fragment 中的片段生命周期事件
我有一个生命周期感知片段和一个LifecycleObserver
类
以下是我的观察者类,它记录了所有片段事件的属性
我想收听片段特定的生命周期事件onDestroyView
, onActivityCreated
但这些事件不存在
Lifecycle.Event
. 它仅包含活动事件。如何在我的观察者中监听片段事件
android - 为什么片段中的 getContext() 有时会返回 null?
为什么getContext()
有时会返回null
?我将上下文LastNewsRVAdapter.java
作为参数传递给。但LayoutInflater.from(context)
有时会崩溃。我在游戏控制台上收到了一些崩溃报告。以下是崩溃报告。
这是LastNewsRVAdapter.java
构造函数。
这是onCreateView
片段内的代码
这是refresh
片段内的方法
android - 在片段中区分首先与以下 onCreateView 的调用
可能这是一个众所周知的话题,但我没有找到任何“通用”的解决方案。
主要问题有两个:
- 当 a
fragment
被放入时backstack
,onSavedInstanceState
永远不会被调用 - 为什么不能实例化
fragment's
视图onCreate
?
在这一点上,我的问题是:因为fragment lifecycle
经历了onCreateView
every resume
,并且因为我们不能实例views
化onCreate
; 为什么views
每次fragment
显示时我们都必须重新创建?必须有一种方法,如Activity
with onCreate
。
我们可能会通过添加 aclass-scoped boolean
并检查它是否有值来避免,但这意味着添加 anif
并且这不是最好的解决方案。另一种解决方案可能是这个,但它也是一种解决方法,它也有一些限制。
是否有解决此问题的内置(或标准)解决方案?
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分屏也会暂停片段而不停止它。
android - 在 Android Oreo 8.0 中 onPause 之前调用的新 Fragment 的 onResume
我在使用 android Oreo 时遇到了麻烦。我的 MainActivity 有 4 个片段,当用户按下选项卡时它们会相互替换。现在的问题是,我在 onPause 的单例实例中保存了一个值。每当用户按下下一个选项卡时,就会在 onPause 之前调用该片段的 onResume,因此我无法正确地从单例中检索值。
android - onDestroyView for Fragment 在 onStop 之后从未调用过
我的APP确实有多个片段和活动,这些活动中的大多数都持有不同的片段,这是为了让我的组件易于重用。当我将其他活动加载到活动堆栈时,我遇到了一个问题。
案例
启动ActivityA-->ActivityB-->ActivityC
所有这些活动都包含不同的片段,但问题是何时从其中的片段ActivityB
启动时不会被调用,尽管 onStop 被调用。ActivityA
ActivityA
onDestroyView
当我继续向堆栈应用程序添加太多活动时,我的应用程序允许从一个到另一个进行无限次数的导航,逐渐引发 OOM 异常。
在下面找到我用来将片段添加到片段回栈的代码。
android - 从 MainActivity 获取数据并在 Fragment 中处理
从 MainActivity 获取数据并在 Fragment 上处理时遇到问题。
起初,有4个片段。我正在使用TabLayout
和ViewPager
。每当从 Tab 中选择一个片段时,它都会触发onPageSelected()
方法。在这里,我实例化事务,并通过setArguments()
. 在片段中,我在getArguments()
成功的帮助下接收到字符串 URL,但是当我使用该 URL 从 API 检索数据时,fetchData()(using Volley)
方法会忽略它。
下面是 onPageSelected() 方法
片段的 onCreateView()
最后,选择片段时的“有趣”日志文件
我的问题是为什么 if 语句调用了两次,尽管它在 Tab 中选择了一次?
我的版本可能是因为beginTransaction
' 延迟,我的意思是,它不能像oncreateView()
方法调用那样快地发送数据。这就是为什么首先执行else部分,然后在执行if部分时 RecyclerView 忽略它。
android - android.app.Application 无法在 clcik 上转换为 android.support.v4.app.FragmentActivity
我有一个实现 RecyclerView.Adapter 的类,并在 onBindViewHolder 中调用 onClick 侦听器来访问另一个片段。我有这个错误仍然存在并指向上下文。下面的代码片段:
我已经在全球范围内实施了我的上下文,并且被告知这不是好的做法。以下是我需要访问的完整课程和片段课程。
}
要访问的片段类
}
主要问题在 FragmentActivity... getSupportFragmentManager ....
android - 应该使用哪个回调来检测从屏幕上删除的 android 片段并且它不再可见
我使用 aFragmentTransaction
在我的活动中显示我的片段,并将其添加到 backstack,如下所示:
当按下后退按钮时,我检查是否myFragment
在顶部,如果是这样,我只需调用super.onBackPressed()
从后堆栈中弹出它并显示前一个片段。
我想知道我的片段上的哪个事件/回调可以帮助我检测到它不再显示在活动中。
我使用onPause()
, onDetach()
and ... 但它们没有被触发(因为它被描述为https://stackoverflow.com/a/16252923/1080355)
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_B
Fragment_B
Fragment_A
任何帮助是极大的赞赏!
编辑:
在调试时浏览源代码后,我发现在FragmentNavigator.navigate()
FragmentTransaction.setReorderingAllowed()被调用,它允许重新排序操作,甚至允许在前onCreate()
一个片段之前调用新片段onDestroy()
。问题仍然存在,在下一个 Fragment 中初始化相同的全局状态之前,如何解决我在一个 Fragment 中正确清理全局状态的问题。