[英]getSupportFragmentManager().findFragmentByTag returns different instance after rotate
我知道如果我旋轉設備,當前活動將被銷毀並重新創建。 如果在活動的onCreate()中可以使用savedInstanceState
則可以通過調用來避免創建新的Fragment
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
iMyFragment = new MyFragment()
Log.d(TAG, "____ onCreate: iMyFragment: " + iMyFragment);
} else {
iLottoTicketFragment = (LottoTicketFragment) getSupportFragmentManager().findFragmentByTag(MyFragment.FRAGMENT_TAG);
Log.d(TAG, "____ savedinstance: iMyFragment: " + iLottoTicketFragment);
if(iMyFragment == null) {
iMyFragment = new MyFragment();
Log.d(TAG, "____ recreate: iMyFragment: " + iLottoTicketFragment);
}
}
}
但是, findFragmentByTag
返回的實例與以前的實例不同,從而引起了各種麻煩。
這是日志輸出(比較ID 973eb65和73e27ce)
06-01 15:47:16.687 15729-15729/D/MainActivity: ____ onCreate: iMyFragment: MyFragment{973eb65}
06-01 15:47:29.774 15729-15729/D/MainActivity: ____ savedinstance: iMyFragment: MyFragment{73e27ce #1 id=0x7f0f0098 MyFragment}
任何人都知道如何從findFragmentById()
獲得完全相同的實例嗎?
旋轉設備后,將創建一個新活動。 狀態被保留,但所有視圖和片段都被重新創建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.