2011-09-21 56 views
2

由于对碎片行为感到沮丧,我开始进行一些测试。在xml布局中声明的碎片中的错误(ACL v4)

我有一个活动和2个片段。片段A在活动的xml布局中声明,片段B在活动的onCreate()方法中的活动布局中添加(仅当它不存在时)。我在活动和2个片段的所有主生命周期方法中添加了日志记录,并在来回切换方向时测试了行为。这里是我的发现:

片段B(动态添加片段)的行为与预期:

一)改变方向时之后,savedInstanceState包包含之前已经保存在onSaveInstanceState()

B)如果setRetainInstance(true),在方向更改期间,onDestroy()未被调用,并且后续的onCreate()未被调用。该片段的字段的取向变化

片段A(在XML布局所限定的片段)期间保留不表现为预期:

a)一种取向变化之后,savedInstanceState束总是空虽然onSaveInstanceState()已经正确地称为

b)如setRetainInstance(true),方位的变化过程中,onDestroy()是不能不称为预期相反的是预期,正在重新连接片段时onCreate()也被称为。此外,片段的字段不会保留。总结一下,对于在xml布局中声明并使用ACL v4的片段,在方向更改期间保存状态不起作用,并且setRetainInstance(true)不起作用。

我的问题是,如果有人在Android 3.0+上测试了此功能,并且可以说使用Android SDK中的片段时,片段是否工作正常。

解决此问题的一种方法是始终动态创建我的碎片。有没有人找到不同的解决方法?

+0

您是否找到解决方案?我有一个非常类似的问题。 – blindstuff

+0

ACL的最新版本修复了大部分问题。 –

回答

0

修订版4的ACL修复了这些问题。

+1

我使用''android.support.v4.app.Fragment''和XML定义的碎片的bug仍然存在:( – caligari

+0

仅供参考,这里可能的解决方案:http://stackoverflow.com/a/20685549/470091 – caligari