Fragment.newInstance()vc onSaveInstanceState()

Eug*_*ene 10 android

为什么建议(不同的来源)不要为Fragments 重载构造函数,而是使用static Fragment.newInstance()传递Bundle给它?

重载构造函数时,只需显式定义默认值即可.比如果你Fragment因为某些原因重新创建你用于onSaveInstanceState()后续数据提取的话onCreate().与使用类似的情况Fragment.newInstance(),唯一的区别是你不需要创建公共默认构造函数.

我理解错了吗?非常感谢你.

Com*_*are 31

为什么建议(不同的源)不要重载Fragments的构造函数,而是使用静态Fragment.newInstance()将Bundle传递给它?

Android会自动在配置更改(例如,屏幕旋转)上重新创建所有未保留的片段,并且它将使用零参数构造函数.的Bundle经由供给setArguments()被保存为实例状态的一部分,并提供给新重建的片段.因此,您只需要实现一个方法(工厂方法)而不是三个(非零参数构造函数 onSaveInstanceState() onViewStateRestored())来采用您建议的方法.

我理解错了吗?

如果它适合你,那就去吧.如您所知,工厂方法方法是建议,而非要求.