2013-04-28 98 views
0

我片段之間這樣的發送數據:Bundle.putParcelable()是否繼續引用對象,或者它是否克隆它?

public static final MyFragment newInstance(MyObject obj) 
{ 
    MyFragment f = new MyFragment(); 

    // Get arguments passed in, if any 
    Bundle args = f.getArguments(); 
    if (args == null) { 
     args = new Bundle(); 
    } 

    // Add parameters to the argument bundle 
    args.putParcelable("obj", obj);   // clone or referenced? MyObject implements parcelable 
    f.setArguments(args); 

    return f; 
} 

我發現,正在改變均勻我傳遞的對象。例如,當我按下後退按鈕並返回到最後一個片段時,我的對象具有剛剛離開的片段的當前狀態。

不Bundle.putParcelable()使對象的克隆?

+0

它應該創建一個Parcelable對象的新實例,如果它通過一個Intent傳遞給另一個Activity或Service但不在同一個Activity中 – dzeikei 2013-08-14 02:19:20

回答

1

於Android來源:

public void putParcelable(String key, Parcelable value) { 
    unparcel(); 
    mMap.put(key, value); 
    mFdsKnown = false; 
} 

所以,不,putParcelable不會克隆對象。

相關問題