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
风格的一次一页的水平滑动模式。因此,即使我的页面也不是碎片。