问题标签 [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 - 片段被销毁后停止处理程序
我有一个Fragment
设置一个ListView
并创建一个定期Handler
更新的。Listview
但是,看起来在被销毁Handler
后仍然运行。Fragment
以下是代码。
ListView
在销毁后更新Fragment
会导致应用程序崩溃。当被摧毁时,我怎样才能导致Handler
停止?Fragment
我还想知道如果暂停应用程序也会产生什么影响Handler
。
android - 调用方法时片段未添加到活动中
我有一个名为 Chessboard 的主要活动。在 Chessboard 的 onCreate 中,我设置了一个片段活动 GameInfoFragment。在此之后,调用查询 SQLite 数据库,之后立即调用 SQLiteDataInterpreter 类中的方法。从这里,调用 GameInfoFragment 类中的方法,其中应该填充我在 Chessboard 的 onCreate 中设置的片段中的 imageViews。
当我尝试启动 Chessboard 活动时,我收到以下错误:
Chessboard 的 onCreate 中的代码如下:
以及导致问题的我的 GameInfoFragment 类中的相关代码:
导致问题的主要代码行是我尝试在上面的代码中设置takePieceHolderID 的值。
如何确保添加我的片段,以便在我的 Chessboard Activity 开始时填充其 imageViews?
android - 4.4中的Fragment生命周期错误,onCreateView()同时在多个Fragment上被调用
我收到错误:
错误,Android框架同时调用多个片段的onCreateView()
我有3 个导航抽屉FrameLayout
:A、B、C
1.)通过抽屉的B选项,用户到达B2片段。
2.) 用户在B2片段上按下Home 键并进入主屏幕。
3.) 用户长按 Home 键,从Android的最近活动中打开此应用程序
在这里我收到错误,如图所示,蓝色为1
我的多个片段正在获取onCreate()
和事件onCreateView()
,onActivityCreated()
因此我正在丢失B2的片段状态,我的应用程序进入默认片段,即A1(从抽屉选项 A 打开)
我还保存了我的 B2 状态onSaveInstanceState()
并恢复了,onActivityCreated()
但这种方法不起作用,因为onActivityCreated()
首先调用 B2,然后调用 A1。因此,我的 B2 片段在前台屏幕上不可见。取而代之的是,A1 在屏幕上可见
笔记 :
我.replace()
在所有情况下都用于切换片段
相同的代码在 Android 5.0+(Lollipop)中运行正确,但在 4.4(和旧版本)中出现错误
任何人都可以提出任何解决方法吗?
android - 如果片段不再在前台,则调用哪个方法?
我用导航抽屉和内容片段实现了一个活动。内容片段被多次替换。但是在某些时候,我必须提供一个跳转到具有特定状态的特定片段。我设法保存了所有必需的变量。它经常工作,但并不总是跳回。
如果特定片段调用他们的onPause()
方法,我会在操作栏中显示一个按钮。但是,由于片段的生命周期与活动相关联并且活动没有变化,因此有时按钮不会出现,因为onPause()
没有被调用。
所以:如果一个片段不再在前台,哪个方法总是被触发?我试过:onPause
,, onStop
....onHiddenChanged()
更新:
这是我保存游戏状态的代码,它放在片段中。直到现在它被放在onStop()
方法中。gamelogic 变量是一个具有许多值和集合的对象。我将其保存到共享首选项中。
在我的主要活动中,我决定是否在操作栏上显示一个图标。通过按下此按钮,我使用已保存的游戏状态保持器重新启动片段。
android - DialogFragment 在方向更改后自行关闭
之前有人问过类似的问题,但我的情况不同。
我的应用程序中到处都是 DialogFragments。当我旋转手机时,除了这个之外,所有的 DialogFragments 都没有问题地返回。
我已经在生命周期回调中添加了 Log 消息,以查看发生了什么,这就是场景:
- 我的 DialogFragment 已创建并显示
- 在轮换时,我将任何我想要的东西保存到一个包中以便之后恢复。
- DialogFragment 已成功重新创建。我知道是因为调用了 onCreate 到 onResume 。
- 在恢复之后,由于某种莫名其妙的原因,onPause、onStop、onDestroyView、onDestroy 和 onDetach 立即被快速连续调用。DialogFragment 在重新创建后立即被销毁,我不知道为什么。
任何帮助深表感谢。DialogFragment 为结果启动一个活动以拍照。它适用于大多数手机,但 Galaxy S3 摄像头会导致方向更改,从而强制重新创建活动。我不介意,我知道如何处理活动娱乐,但我从未遇到过。
DialogFragment 是通过 RecyclerView 适配器回调从主托管活动中的常规片段启动的。
我没有在托管 RecyclerView 的片段中使用 ChildFragmentManger 显示 DialogFragment,因为多个片段可以显示此 DialogFragment 并且功能始终相同。无论哪个片段启动它,让活动接收回调更为谨慎。
从片段:
主托管活动收到回调并显示如下:
这些是我的生命周期回调:
编辑:我已经解决了这个问题。要显示 DialogFragment,我应该使用托管片段的 ChildFragmentManager 而不是活动。也就是说,改变这个:
对此:
是票。希望能帮助其他有类似问题的人。
android - 在方向更改时创建两次嵌套片段
我创建了这个示例来了解 android 片段在屏幕方向更改时的生命周期。
MainActivity 是 DrawerLayout 的容器,DrawerLayout 允许您选择一个片段,该片段将填满 MainActivity 屏幕。
然后我有ParentPagerFragment,ParentPagerFragment 只包含一个带有3 个ChildTextViewFragments 的ViewPager。
ChildTextViewFragment 仅用于显示一些文本
在我第一次运行此示例后,我按预期收到了这些日志消息:
当我旋转显示器时,惊喜出现了:
我期待所有片段都将被恢复并再次显示(就像此日志的前 4 行所示),但我不明白,为什么所有片段都使用 savedInstanceState = null 再次创建?这是一种常见的行为,还是我做错了什么?
android - 在哪里恢复 ViewPager 中的片段状态
精简版:
我有一个有 ViewPager 的 Activity。ViewPager 里面有三个片段。我通过实现 Parcelable 并将其存储在包中来将数据存储在片段中。
现在的问题是我在哪里恢复数据。我很困惑,因为(据我所知)每次旋转屏幕时,ViewPager 都会创建片段的新实例。(创建了一个新活动 -> 新 ViewPager -> 新片段)。如果我错了,请纠正我。
长版:
我在 MainActivity 中的 ViewPager
我的 FragmentPagerAdapter
在我的片段之一中保存状态
提前致谢!
更新:
根据发布到类似问题的其他解决方案,我还添加了setRetainInstance(true); 在我的片段的 onCreateView 中。这就是我保存和恢复状态的方式:
并在 onCreateView 中恢复
我看到两个日志都被触发了。为什么数据没有恢复?
android - 持有 ViewPager 的 Fragment 的生命周期
我有一些让我难过的事情。我有一个片段(片段 A),它的 ViewPager 包含三个片段(用于向左/向右滑动)。因此,如果在另一个片段中,在onBackPressed()方法中,我执行getFragmentManager().popBackStack()调用,片段 A 将再次可见(带有子片段的 ViewPager),这是所需的状态。但是,对于 Fragment A 或 ViewPager 中没有任何方法表明 Fragment A/ViewPager 再次可见。
片段生命周期 ( http://developer.android.com/guide/components/fragments.html ) 中引用的任何片段方法都不应在“片段从后台堆栈返回布局”或任何方法时调用在 OnPageChangeListener 中调用(是的,我确实在 Fragment A 的 onCreateView 中调用 viewPager.setOnPageChangeListener(this))。
关于我可以在哪里看的想法?
android - 如何获得一个片段的视图高度到另一个片段?
我有 3 个标签。1 个选项卡有一个查看器。我想在 viewpager 中获取项目视图的高度,以便可以在我的选项卡中使用它。如果我尝试访问 onResume 中的片段,则视图始终为空。
选项卡的布局
视图分页器内项目的布局。我想获取从屏幕顶部到卡片视图末尾的值