[英]Unknown fragment after rotation
在我的應用程序中,使用關鍵字new
創建一個片段,並通過FragmentTransaction
設置。
旋轉時,在onActivityCreated()
方法中偶然發現NullPointerException
,指示缺少注入,這是在調用new
之后執行的。 我懷疑該片段不是由我的代碼創建的,並且通過記錄hashCode()
證明了這一點。 看起來像片段是系統在旋轉時自動創建的。
現在,我通過測試null值來忽略它,在這種情況下, onActivityCreated()
不會執行任何操作。 而是使用我用new
創建的片段。 但是,丟棄已經創建的對象並不十分令人滿意。
它從何而來? 它是由片段管理器創建的嗎?
在Activity娛樂上,Android將還原Activity的片段管理器中已經存在的片段
我應該如何正確使用它?
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)
獲取片段實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.