我有一个页面和一个FragmentStatePagerAdapter里面的活动(我需要滑过很多页面)。众所周知,该适配器一次创建3个片段实例,即要显示的片段实例,前一个和下一个片段实例。Android碎片:是空的构造函数真的需要吗?
我的活动使用只有一个构造函数的片段效果非常好:它收到1个参数。测试时,我开始变得臭名昭著消息:
Unable to instantiate fragment: make sure class name exists, is public,
and has an empty constructor that is public
有趣的是,这个消息只是方向更改后正确显示出来,但如果方向保持静止的应用只是工作。所以,
- 为什么它的工作方向不会改变?
- 为什么方向改变时会失败?
- 定向变化与刚刚创建的活动相比,片段生命周期中活动的差异是什么?
非常感谢
如果是这样,为什么框架在重新创建活动和片段时遵循不同的步骤。我的意思是,如果碎片和活动被破坏,为什么不按照第一次采取的相同的创作步骤? – 2014-09-23 14:24:08
@Mark:因为它不能。 *您*在您的代码*中第一次创建了片段。 Android不是你。 Android无法在您的代码中识别出执行'FragmentTransactions'的随机语句,更不用说以某种方式重播这些语句。 – CommonsWare 2014-09-23 14:26:19
我的意思是,框架正在破坏活动及其内部碎片。为什么不重新运行相同的代码,就像创建第一次一样? – 2014-09-23 20:33:46