Android Fragments和setRetainInstance(true)

时间:2015-06-25 06:29:50

标签: android-fragments

我正在使用支持片段,在我的片段中我有setRetainInstance(true)。如果我们的片段中有setRetainInstance(true),我读取该片段的onCreate()和onDestroy()将不会在配置更改时被调用。但是当我在三星note3中更改字体样式时,仍会重新创建活动并调用片段onCreate()。这是一个配置更改吗?如果是,为什么片段实例已初始化。如果不是配置更改,我们应该如何处理它。任何人请澄清。

1 个答案:

答案 0 :(得分:0)

我觉得这个问题很有趣,因为它与配置变更有关。如您所知,通常所有配置更改都将触发onCreate()和onDestroy()。这是有道理的,你的代码通常甚至不关心,除非你不遵守Fragment生命周期。为了其他读者,setRetainInstance( true )应该不触发 onCreate()和onDestroy(),如你所说。

字体样式更改肯定是配置更改。三星可能会重新加载您的应用活动,他们可以做到这一点,他们制作自己的Android主屏幕。 我找到了一个相关的SO网页@ ...configChanges value for Font Style change in Samsung Device。阅读该帖子的答案。

我的一个建议是将代码放在onCreate()中,这样您就不会关心这个问题。否则,您可能必须覆盖字体更改的方法或可能的其他更改。