簡體   English   中英

旋轉后未知片段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM