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

android - 在旋转和返回时恢复 MapView 的状态

背景

我有一个更大的应用程序,其中我遇到/遇到了新的 Google Maps API 的几个问题。我试图用另一个问题来描述它,但由于它看起来太复杂了,我决定开始一个新项目,尽可能简单并尝试重现问题。所以就在这里。

情况

我正在使用Fragments并想放在MapView里面。我不想使用MapFragment. 我准备的示例项目可能不是很漂亮,但我试图使其尽可能简单,并且它必须包含原始应用程序中的一些元素(再次简化)。我有一个Activity和我的自定义FragmentMapView以编程方式添加。Map包含一些点Markers/ 。单击显示并单击它后,会在内容中显示下一个Marker(带有功能)。InfoWindowFragmentreplace()

问题

我有两个问题:

  1. 当显示Mapwith时,Markers屏幕旋转会导致Class not found when unmarshalling我的自定义类出错MyMapPoint- 我不知道为什么以及这意味着什么。

  2. 我单击Marker然后InfoWindow。在此之后,我按下硬件后退按钮。现在我可以看到Map但没有Markers和居中的0,0点。

编码

主要活动

activity_main.xml

map_fragment.xml

我的地图片段

如果您需要查看任何其他文件 - 请告诉我。在这里您可以找到一个完整的项目,您只需将自己的 Maps API KEY 放入AndroidManifest.xml文件中。

编辑

我设法使示例更加简单,并更新了上面的代码。

0 投票
2 回答
1715 浏览

android - 用户“退出”时的片段生命周期

我有一个主要活动是显示/隐藏一堆片段。在用户登录的一开始就有一个登录活动。当用户按下主页或多任务按钮时,应用程序应该启动一个计时器,该计时器(在计时器用完后)自动将用户注销。这可能是当用户返回应用程序时(并且计时器已用完 -> 注销)或在应用程序中并且什么也没做。

就片段的生活方式而言,当用户按下主页/多任务按钮时,究竟会调用什么?在我的快速测试中,似乎每次都调用片段管理器的 onPause 中的第一个片段,无论用户退出时屏幕上的片段如何。

我该怎么办?

0 投票
1 回答
965 浏览

android - 使用 FragmentPagerAdapter 延迟调用 Android Fragment onPause 事件

我在管理 4 个片段的活动中有一个 FragmentPagerAdapter,一切正常,但是在加载新片段后,不会立即调用每个片段的 onPause 和 onDestroyView 事件,即:

片段A --> 片段B --> 片段C --> 片段D

当我传递给 FragmentC 时,FragmentA 的 onPause/onDestroyView 事件被调用,全局这些事件在 2 个步骤后被调用。

我错过了什么吗?

谢谢。

0 投票
1 回答
9404 浏览

android - 片段实例中带有 Otto 事件总线的 IllegalArgumentException

我正在使用 Otto 事件总线订阅 ListFragment 中的某些事件。总线实例存储和创建在 Application 的子类中,换句话说,它总线应该作为单例工作。好像不是这样的……

该片段在 中注册到总线onActivityCreated(Bundle)并在中取消注册onDestroy()。这不能正常工作。我从应用程序在调用时崩溃的设备收到了几份崩溃报告unregister()(java.lang.IllegalArgumentException:缺少带注释的方法的事件处理程序......)。unregister()仅当在任何 register() 调用之前被调用或被unregister()调用两次时才会抛出此异常。这可能只发生在...

  • onActivityCreated(Bundle)之前没有调用onDestroy()
  • onDestroy()被调用两次。
  • 在调用和Application之间重新创建实例。onActivityCreated(Bundle)onDestroy()

我的应用程序类:

片段类:

更新:

我遗漏了一个重要的细节;片段用于 a ViewPager。当用户在ViewPager. 这个小细节似乎改变了某些设备上的片段生命周期:在创建 onActivityCreated()之后启动的片段永远不会被调用。ViewPager

0 投票
2 回答
16850 浏览

android - add() & replace() 与 Fragment 生命周期的区别

我的程序有 6 个片段:Fragment1、Fragment2、....->Fragment6。

我使用 add() 和 replace() 语句在片段之间切换并跟踪它们的生命周期。

Fragment1添加Fragment2添加Fragment3添加Fragment4添加Fragment5替换Fragment6

显示它们的生命周期的日志猫(我在 onCreate、onCreateView、onDestroyView、onDestroy 中有一些 printf 点用于跟踪)


标签 __ _ __ _ __ _ __ _ __ 文字

片段1_ _ __ _ ___ _onCreate

片段1_ _ __ _ ___ _onCreateView

片段1_ _ __ _ ___ _添加片段2

片段2_ _ __ _ ___ _onCreate

片段2_ _ __ _ ___ _onCreateView

片段2_ _ __ _ ___ _添加片段3

片段3_ _ __ _ ___ _onCreate

片段3_ _ __ _ ___ _onCreateView

片段3_ _ __ _ ___ _添加片段4

片段4_ _ __ _ ___ _onCreate

片段4_ _ __ _ ___ _onCreateView

片段4_ _ __ _ ___ _添加片段5

片段5_ _ __ _ ___ _onCreate

片段5_ _ __ _ ___ _onCreateView

片段5 __ _ __ _ _ 替换 Fragment6

片段1 __ _ __ _ _ onDestroyView

片段3 __ _ __ _ _ onDestroyView

片段5 __ _ __ _ _ onDestroyView

片段6_ _ __ _ ___ _onCreate

片段6_ _ __ _ ___ _onCreateView


我的问题:

为什么Fragment5 被 Fragment6替换后, Fragment1 & 3 &5 被破坏了他们的视图?

Fragment2 & 4 发生了什么

为什么Fragment2 & 4 没有破坏他们作为 Fragment1 & 3 &5 的观点?

请帮助我在调用 add() 和 replace() 方法时充分了解片段的生命周期。


更新我的 addFragment 和 replaceFragment 方法:

0 投票
2 回答
2737 浏览

android - 嵌套片段生命周期

我有4个片段。hide我通过使用/show事务在它们之间切换。其中之一可能具有由replace事务添加的嵌套片段。问题是,如果我添加一个嵌套片段隐藏主片段并再次显示它,onHiddenChanged则不会调用我的嵌套片段的方法。为什么这样?如何确定我的嵌套片段何时可​​见?

0 投票
1 回答
456 浏览

android - android片段isRemoved方法

android中有一个isRemoving片段的方法。根据文档,它只告诉片段何时正在被删除。但我需要知道一个片段是否已经被删除。有没有办法找到这个?我正在使用 api 级别 11。

0 投票
2 回答
5519 浏览

android - onSaveInstanceState 中的保存接口(Listener)

保存实例状态

对于 Integer、Long、String 等数据都可以,我只需将其放入包中,并在再次调用 onCreateView 时将其取回。但我的片段也有如下听众,

我怎样才能让听众捆绑,以便我以后可以取回它?

0 投票
1 回答
167 浏览

android - ViewPager 中的片段——点击当前片段中的按钮会影响片段之后的片段,而不是当前/可见片段

问题:在单击fragment内部的按钮时ViewPager,单击会掉到fragment它后面的那个,并onClickListener()在后面fragment而不是当前片段的onClickListener().

情况:我有一个ViewPager4 fragments。每个都fragment包含几行定制的按钮。每个fragment都有自己的独特之处view/layout,但它们的设计都相似。

设置:我正在使用FragmentPagerAdapter,因为我有一个非常静态的简短列表,fragments并且因为我需要fragment使用来交流和更新每个interface,就像开发人员文档建议的那样。

我的想法:我应该切换到FragmentStatePagerAdapter吗?那么当它们不可见时adapter会破坏吗?fragments但是在这样做时,我将无法与他们沟通并相应地fragments更新他们吗?

我不知道如何解决这个问题,它一直让我发疯!任何帮助表示赞赏。

问我是否需要澄清任何事情。

0 投票
1 回答
618 浏览

nullpointerexception - 在 ListFragment 内的适配器上调用 notifyDataSetChanged() 会导致 NullPointerException?

介绍:

我有以下设置:

  1. 一个MainActivitywith 方法onNewIntentand processNewIntent, the MainActivityalso implements FragmentActivity; 并有一个选项卡式片段,它实现FragmentList

  2. listaddactivity创造新事物的活动Parcelable listControlObject

  3. listaddactivity活动发送一个带有包裹的意图,然后在MainActivity'sonNewIntentprocessNewIntent类中重建 listControlObject。

  4. 然而; 我可以接受intent我的onNewIntent方法,它会构建新的listControlObject罚款;但是当我在课堂上调用该adapter.notifyDataSetChanged方法时。FragmentList

日志错误:

onNewIntent方法:

processNewIntent方法:

引发 nullpointerexception 的特定行:

ListFragment班级: