0

次のようにフラグメント間でデータを送信しています。

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() はオブジェクトのクローンを作成しませんか?

4

1 に答える 1

1

From Android Sources:

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

So no, putParcelable does not clone the object.

于 2013-04-28T05:51:46.727 に答える