0

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

片段1代码:

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();

片段2代码:

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 的两个片段中都得到了相同的参考。在更改第二个片段上的数据时,第一个片段中的数据会自动更改。因为参考是一样的。

因此,在按下返回按钮时,数据也会发生变化。但我不想在按下后退按钮时进行任何更改。

如何解决这个问题?

4

1 回答 1

0

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

于 2016-01-05T14:03:31.117 回答