Android 为什么我不能为嵌套片段设置RetainInstance(true)?
据我所知,这意味着我必须使用Android 为什么我不能为嵌套片段设置RetainInstance(true)?,android,performance,android-fragments,Android,Performance,Android Fragments,据我所知,这意味着我必须使用Bundle实例来存储片段的数据。但这种限制的目的是什么 public void setRetainInstance(boolean retain) { if (retain && mParentFragment != null) { throw new IllegalStateException( "Can't retain fragements that are nested in other
Bundle实例
来存储片段的数据。但这种限制的目的是什么
public void setRetainInstance(boolean retain) {
if (retain && mParentFragment != null) {
throw new IllegalStateException(
"Can't retain fragements that are nested in other fragments");
}
mRetainInstance = retain;
}
setRetainInstance()
依赖于活动上的onCreateNonConfigurationInstance()
和getLastNonConfigurationInstance()
。对于由活动直接管理的片段来说,这非常容易。然而,对于任意深度嵌套的片段,可能他们认为这会变得太复杂,特别是如果保留嵌套片段的父片段本身没有被保留。@commonware谢谢,现在我明白了。所以,如果不将嵌套片段保存到Bundle
,就没有其他方法可以保存嵌套片段的字段了?即使父片段是setRetainInstance(true)
?就我个人而言,我完全避免嵌套片段。您列出的代码表明,无论父片段本身是否被保留,您都无法保留嵌套片段。@Commonware在ViewPager
内部需要retain fragment
时,您如何处理这种情况?是否有任何实现可以将页面(片段)直接放入活动
?我不在片段内部使用查看页面
,因此我不需要嵌套片段。实际上,最近我转向了使用,它使用RecyclerView
实现了ViewPager
风格的一次一页的水平滑动模式。因此,即使我的页面也不是片段。setRetainInstance()
依赖于活动上的onCreateNonConfigurationInstance()
和getLastNonConfigurationInstance()
。对于由活动直接管理的片段来说,这非常容易。然而,对于任意深度嵌套的片段,可能他们认为这会变得太复杂,特别是如果保留嵌套片段的父片段本身没有被保留。@commonware谢谢,现在我明白了。所以,如果不将嵌套片段保存到Bundle
,就没有其他方法可以保存嵌套片段的字段了?即使父片段是setRetainInstance(true)
?就我个人而言,我完全避免嵌套片段。您列出的代码表明,无论父片段本身是否被保留,您都无法保留嵌套片段。@Commonware在ViewPager
内部需要retain fragment
时,您如何处理这种情况?是否有任何实现可以将页面(片段)直接放入活动
?我不在片段内部使用查看页面
,因此我不需要嵌套片段。实际上,最近我转向了使用,它使用RecyclerView
实现了ViewPager
风格的一次一页的水平滑动模式。因此,即使我的页面也不是碎片。