簡體   English   中英

旋轉后getSupportFragmentManager()。findFragmentByTag返回不同的實例

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

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