(疑难杂症篇)当Acitivity传值给Fragment,Fragment改变传过来值的问题

Activity传给fragment的arraylist经过fragment中的修改居然会改变activity的arrayList(之前传给fragment的那个),如何改变在fragment中修改传来的arraylist的值,而不改变Activity中那个arrayList(之前传给fragment的)。

方法1:在fragment中新new一个list,在重新new对象,把传过来的数据赋给新的对象。这样就改变引用的问题.

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            arrayList = getArguments().getParcelableArrayList(ARG_PARAM2);
        }
    }
  @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        ArrayList  list1=new ArrayList<>();

        for (User user1 : arrayList) {
            User user2=new User();
            user2.setName(user1.getName());
            user2.setPwd(user1.getPwd());
            list1.add(user2);
        }
       User user =list1.get(0);
        user.setName("谢敏");
    }

总结:思考几天,尝试过各种方式,好像就这种方式简单点,不

过有一点就是有点耗内存,毕竟你每次传arrayList过去,数据空

间都重新new的,如果数据量不大,觉得对性能影响不大,还是

可以用的。如果有人更好的方法请指教。欢迎大家指正。




你可能感兴趣的:(android)