编辑::更新的代码来显示我关心的事情:更改碎片中的mData更改发件人中的mData。Bundle.putSerializable序列化引用,而不是值?
我通过捆绑将自定义数据类传递到子视图,意图将数据返回给父级。因此,我的数据对象作为参考传递很方便,因此可以直接操作。
但是,来自iOS,这当然是对功能性编程。我大多只是在这里好奇,我是否需要做更多的事情来实现Serializable?或者它的意图是putSerializable序列化参考,而不是值?
class Sender{
DataClass mData = new DataClass();
void openFragment(){
Bundle bundle = new Bundle();
bundle.putSerializable("Key", mData);
Frag frag = new Frag(); //@6945
//EDIT for test
{
testForEquality(bundle);
}
frag.setArguments(bundle);
pushFragment(frag);//Makes a new view appear on top
}
void testForEquality(Bundle bundle){
DataClass newData = (DataClass) bundle.getSerializable("Key");
Log.e("Equal", "" + (newData == mData); //TRUE
}
}
class Frag{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance){
DataClass mData = (DataClass) getArguments().getSerializable("Key"); //@6945
mData.stringA = "Different string value"; //Changes value here AND in Sender
}
}
class DataClass extends BaseDataClass implements Serializable{
//Some strings
//Some ArrayList<Integers>
//Some enums
//Some Errors
}
我还没有看到,当唯一的外部答案是错的这个问题是怎么downvoted ... – Mars