引用通过片段中的bundle传递

时间:2016-01-05 13:59:57

标签: java android android-fragments android-bundle

我通过bundle从fragment1传递数据到fragment2。

Fragment1代码:

SecondFragment secondFragment = new SecondFragment();
    Bundle bundle = new Bundle();
    bundle.putSerializable("SendPojo", sendPojo);
    secondFragment.setArguments(bundle);
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.replace(R.id.layout, secondFragment, "Second Fragment");
    transaction.addToBackStack("Second Fragment");
    transaction.commit();

Fragment2代码:

SendPojo sendPojo;
    Bundle bundle = getArguments();
    SendPojo sendPojo = (SendPojo) bundle.getSerializable("SendPojo");
    sendPojo.data = "Changed";

Pojo类代码:

public class SendPojo implements Serializable {
    public transient String data = "";
}

我在SendPojo的两个片段中获得相同的引用。在更改第二个片段的数据时,第一个片段中的数据会自动更改。因为参考是一样的。

因此,在按下后退按钮时,数据也会发生变化。但是我不希望按下后退按钮有任何改变。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您可以在第二个片段中创建Pojo的新引用,并将数据从第一个Pojo传输到第二个片段。因此,在将数据从一个传输到另一个时,您将有两个不同的引用。