问题标签 [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 - 片段中的属性在最小化时变为空并返回“不保留活动”
我有一个片段,我在其中使用一个按钮并在 onCreateView() 中调用该按钮。
我在片段中声明了这些属性:
在 onCreateView() 方法中,我为它们赋值:
我在 onStart() 方法中使用这些:
当我最小化并返回时,buttonValue 不会变为空,但载体值变为空。
为什么会这样?两个对象不应该是统一的吗?
承运人等级:
我正在加载的这个片段基于父片段
它像是public class ThisFragment extends ParentFragment {}
父片段:
android - getContext() 在这个流程中可以为空吗?
如果我有一个onClickListener
在用户单击按钮时调用的,并且该侦听器对包含片段的方法进行回调,该方法执行getContext()
.
是否存在getContext()
此序列中的 可以返回的情况null
?
我试图了解在这种特定Context c = getContext(); if(c == null) return;
情况/流程中这样做是否有意义,或者是无用的防御性检查
更新评论中引用的链接:
我知道当我们通过回调访问上下文时,它可以为空,例如在处理网络请求时。
但是在我描述的情况下,当用户与 UI 元素进行交互时调用的回调是存在可能的情况null
。
流程是:
- 用户单击按钮
- 调用动作监听器并调用另一个回调
- 包含片段内的回调侦听器确实
getContext()
这种流动最终会getContext()
返回null
吗?
android - 区分静态片段和动态片段
编写一个 android 库,我正在使用supportFragmentManager.registerFragmentLifecycleCallbacks
. 在回调中有片段对象,我如何检查片段是静态片段(在 xml 文件中定义)还是动态片段(在像 FrameLayout 这样的容器中定义)?
android - 片段生命周期
我试图了解 Android 片段的内部行为。onDestroy()
对, onDetach()
和之间的确切区别有疑问
当片段不再使用时调用。这被称为之后onStop()
和之前onDetach().
当片段不再附加到其活动时调用。这在 onDestroy() 之后调用。
查询: 如果片段不再使用,意味着我们可以从 Activity 中删除该片段,对吗?
这种情况下为什么要先调用onDestroy()再调用onDetach(),我们只能用一种方法来表示“Fragment不再使用,可以移除activity”的状态
android - 从互联网加载数据后如何管理片段`onCreateView()`
我有 3 个Fragments
里面ViewPager
。我调用了第一个返回 JSON 数据的 in(第二个和第三个API
是空的)。onCreate()
Fragment
Fragments
问题是onCreateView()
总是在从中获取数据之前执行API
,所以我需要向右滑动两次,这将调用onPause()
第一个方法Fragment
,然后我需要回到第一个Fragment
调用onCreateView()
第一个方法Fragment
,这一次,因为数据有从 Internet 加载,它将显示数据。
我怎样才能克服这个问题并强制第一个在第一次调用Fragment
时显示数据?onCreateView()
android - 在 Fragment 中哪里启动视图?onViewCreated 或 onActivityCreated
那么在片段中启动视图的最佳位置在哪里?我们知道我们应该只在内部膨胀布局onCreate()
而不是启动视图,比如设置监听器。
您应该在 onCreateView 中扩展您的布局,但不应该在 onCreateView 中使用 findViewById 初始化其他视图。
我们知道它onViewCreated()
是在之后立即调用onCreateView()
的,基本上视图是膨胀的,一切都准备好了。但问题是onViewCreated
每次你转到另一个页面并返回时都会调用它!因此,如果您在此处启动视图,例如添加一些侦听器,因为onViewCreated
被多次调用,您最终会多次启动视图。
所以我的问题是:
- 我理解
onCreateView()
和onViewCreated
正确吗? - 用于启动视图是否正确
onActivityCreated
,因为它只被调用一次并且在之后被调用onCreateView()
?
android - 片段保存以前的状态,但不能正确恢复
我有一个活动,它在 onCreate 中加载一个片段,如下所示:
我正在尝试保存和恢复加载的片段的状态,如下所示:
发生的情况是我正确存储了微调器的位置,但无论如何都会重新创建微调器,并且它的位置是默认位置,即使我选择了保存的位置。我不确定为什么会发生这种情况,有人可以帮忙吗?
编辑
我在这里设置微调器:
编辑 2
我又做了一些尝试。我举了一些祝酒词来展示发生的事情是这样的:
当我尝试在模拟器上运行此代码时,会发生这种情况:当我第一次启动应用程序时,它会进入 else 语句(应该是正确的)。当我改变方向时,两个 toast 都会显示(显然我首先在 onSaveInstanceState 中保存了一些东西),这是不对的。为什么会这样?
android - 静态添加的 Fragment 无法恢复实例状态?
onViewStateRestored(savedInstanceState: Bundle)
当我在 Activity 布局中静态添加 Fragment 时,即使onSaveInstanceState(outState: Bundle)
正确调用,我似乎也无法恢复状态。
当我动态添加它时,它适用于同一个片段。
这根本不可能做到这一点,还是需要在清单或 w/e 中进行额外配置
编辑: onViewStateRestored(savedInstanceState: Bundle)
将被调用,但 Bundle 为空,以及在传递 Bundle 的其他生命周期回调中
android - Kotlin:在 onCreateView 中创建内容
由于我的函数getInfoTrafic() ,我正在生成一些内容。但是当我在我的屏幕上显示它时,我的屏幕会被加载,然后(比如一秒钟),我的内容就会生成。
为什么?这对片段来说是正常的吗?有可能做我想做的事吗?
这些是我的功能。
而这个正在将我的元素添加到我的布局中
android - 导航组件防止在后按时重新创建片段
我在我的项目中使用 Jetpack 导航组件,其中包含一个活动和一些片段。
我有一个带有从服务器端填充的列表的片段。然后我调用getDataFromServer
该onViewCreated
方法,当用户单击一个项目时,会显示一个新片段。
问题是当我按下后退按钮时,onViewCreated
在我的列表片段中再次调用。
那么,我怎样才能防止我的第一个片段再次重新创建呢?我不想要不必要onViewCreated
的电话。