我通过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的两个片段中获得相同的引用。在更改第二个片段的数据时,第一个片段中的数据会自动更改。因为参考是一样的。
因此,在按下后退按钮时,数据也会发生变化。但是我不希望按下后退按钮有任何改变。
如何解决此问题?
答案 0 :(得分:0)
您可以在第二个片段中创建Pojo
的新引用,并将数据从第一个Pojo
传输到第二个片段。因此,在将数据从一个传输到另一个时,您将有两个不同的引用。