问题标签 [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 投票
0 回答
47 浏览

android - 片段中的属性在最小化时变为空并返回“不保留活动”

我有一个片段,我在其中使用一个按钮并在 onCreateView() 中调用该按钮。

我在片段中声明了这些属性:

在 onCreateView() 方法中,我为它们赋值:

我在 onStart() 方法中使用这些:

当我最小化并返回时,buttonValue 不会变为空,但载体值变为空。

为什么会这样?两个对象不应该是统一的吗?

承运人等级:

我正在加载的这个片段基于父片段

它像是public class ThisFragment extends ParentFragment {}

父片段:

0 投票
0 回答
64 浏览

android - getContext() 在这个流程中可以为空吗?

如果我有一个onClickListener在用户单击按钮时调用的,并且该侦听器对包含片段的方法进行回调,该方法执行getContext().
是否存在getContext()此序列中的 可以返回的情况null
我试图了解在这种特定Context c = getContext(); if(c == null) return;情况/流程中这样做是否有意义,或者是无用的防御性检查

更新评论中引用的链接:
我知道当我们通过回调访问上下文时,它可以为空,例如在处理网络请求时。
但是在我描述的情况下,当用户与 UI 元素进行交互时调用的回调是存在可能的情况null
流程是:

  1. 用户单击按钮
  2. 调用动作监听器并调用另一个回调
  3. 包含片段内的回调侦听器确实getContext()

这种流动最终会getContext()返回null吗?

0 投票
1 回答
79 浏览

android - 区分静态片段和动态片段

编写一个 android 库,我正在使用supportFragmentManager.registerFragmentLifecycleCallbacks. 在回调中有片段对象,我如何检查片段是静态片段(在 xml 文件中定义)还是动态片段(在像 FrameLayout 这样的容器中定义)?

0 投票
2 回答
622 浏览

android - 片段生命周期

我试图了解 Android 片段的内部行为。onDestroy()对, onDetach()和之间的确切区别有疑问

当片段不再使用时调用。这被称为之后onStop()和之前onDetach().

当片段不再附加到其活动时调用。这在 onDestroy() 之后调用。

查询: 如果片段不再使用,意味着我们可以从 Activity 中删除该片段,对吗?

这种情况下为什么要先调用onDestroy()再调用onDetach(),我们只能用一种方法来表示“Fragment不再使用,可以移除activity”的状态

0 投票
1 回答
281 浏览

android - 从互联网加载数据后如何管理片段`onCreateView()`

我有 3 个Fragments里面ViewPager。我调用了第一个返回 JSON 数据的 in(第二个和第三个API是空的)。onCreate()FragmentFragments

问题是onCreateView()总是在从中获取数据之前执行API,所以我需要向右滑动两次,这将调用onPause()第一个方法Fragment,然后我需要回到第一个Fragment调用onCreateView()第一个方法Fragment,这一次,因为数据有从 Internet 加载,它将显示数据。

我怎样才能克服这个问题并强制第一个在第一次调用Fragment时显示数据?onCreateView()

0 投票
1 回答
2966 浏览

android - 在 Fragment 中哪里启动视图?onViewCreated 或 onActivityCreated

那么在片段中启动视图的最佳位置在哪里?我们知道我们应该只在内部膨胀布局onCreate()而不是启动视图,比如设置监听器。

您应该在 onCreateView 中扩展您的布局,但不应该在 onCreateView 中使用 findViewById 初始化其他视图。

我们知道它onViewCreated()是在之后立即调用onCreateView()的,基本上视图是膨胀的,一切都准备好了。但问题是onViewCreated每次你转到另一个页面并返回时都会调用它!因此,如果您在此处启动视图,例如添加一些侦听器,因为onViewCreated被多次调用,您最终会多次启动视图。

所以我的问题是:

  • 我理解onCreateView()onViewCreated正确吗?
  • 用于启动视图是否正确onActivityCreated,因为它只被调用一次并且在之后被调用onCreateView()
0 投票
1 回答
31 浏览

android - 片段保存以前的状态,但不能正确恢复

我有一个活动,它在 onCreate 中加载一个片段,如下所示:

我正在尝试保存和恢复加载的片段的状态,如下所示:

发生的情况是我正确存储了微调器的位置,但无论如何都会重新创建微调器,并且它的位置是默认位置,即使我选择了保存的位置。我不确定为什么会发生这种情况,有人可以帮忙吗?

编辑

我在这里设置微调器:

编辑 2

我又做了一些尝试。我举了一些祝酒词来展示发生的事情是这样的:

当我尝试在模拟器上运行此代码时,会发生这种情况:当我第一次启动应用程序时,它会进入 else 语句(应该是正确的)。当我改变方向时,两个 toast 都会显示(显然我首先在 onSaveInstanceState 中保存了一些东西),这是不对的。为什么会这样?

0 投票
1 回答
47 浏览

android - 静态添加的 Fragment 无法恢复实例状态?

onViewStateRestored(savedInstanceState: Bundle)当我在 Activity 布局中静态添加 Fragment 时,即使onSaveInstanceState(outState: Bundle)正确调用,我似乎也无法恢复状态。

当我动态添加它时,它适用于同一个片段。

这根本不可能做到这一点,还是需要在清单或 w/e 中进行额外配置

编辑: onViewStateRestored(savedInstanceState: Bundle)将被调用,但 Bundle 为空,以及在传递 Bundle 的其他生命周期回调中

0 投票
1 回答
4455 浏览

android - Kotlin:在 onCreateView 中创建内容

由于我的函数getInfoTrafic() ,我正在生成一些内容。但是当我在我的屏幕上显示它时,我的屏幕会被加载,然后(比如一秒钟),我的内容就会生成。

为什么?这对片段来说是正常的吗?有可能做我想做的事吗?

这些是我的功能。

而这个正在将我的元素添加到我的布局中

0 投票
4 回答
11137 浏览

android - 导航组件防止在后按时重新创建片段

我在我的项目中使用 Jetpack 导航组件,其中包含一个活动和一些片段。

我有一个带有从服务器端填充的列表的片段。然后我调用getDataFromServeronViewCreated方法,当用户单击一个项目时,会显示一个新片段。

问题是当我按下后退按钮时,onViewCreated在我的列表片段中再次调用。

那么,我怎样才能防止我的第一个片段再次重新创建呢?我不想要不必要onViewCreated的电话。