在我的应用程序中,我创建了一个包含关键字new
的片段,并将其设置为FragmentTransaction
。
在轮换时偶然发现方法NullPointerException
中的onActivityCreated()
表示注射丢失,我在调用new
后执行此操作。我怀疑该片段不是由我的代码创建的,并通过记录hashCode()
证明了这一点。看起来片段是由系统在旋转时自动创建的。
现在我通过测试null值来忽略它,因为onActivityCreated()
什么都不做。而是使用我用new
创建的片段。然而,抛弃一个已经创建的对象并不令人满意。
答案 0 :(得分:0)
它来自哪里?它是由片段管理器创建的吗?
在Activity娱乐中,Android将恢复活动的片段管理器中已存在的片段
我该如何正确使用它?
public void onCreate(Bundle savedInstanceState){
if(savedInstanceState == null){
//activity is created for first time
//commit the fragment
}else{
//Activity is recreated(by means of rotation or something else)
//Dont commit the fragment, fragmet will be restored by the system
}
}
如何访问它,设置缺失值?
通常,您必须使用onSaveInstanceState
方法在片段内处理此问题。您可以使用getSupportFragmentManager.findFragmentById(R.id.container)
或getSupportFragmentManager.findFragmentByTag(tagName)