Java 活动中的两个对象,修改其中一个会自动修改另一个
在Android Studio中,我正在编写一个活动,允许用户修改一个名为Java 活动中的两个对象,修改其中一个会自动修改另一个,java,android-studio,object,Java,Android Studio,Object,在Android Studio中,我正在编写一个活动,允许用户修改一个名为product的特定对象。用户还可以选择保存所做的修改。我的目标是,当用户想要离开活动,并且修改尚未保存时,会显示一个通知,告知用户修改尚未保存 为此,我实施了以下步骤: 在OnCreate方法中,创建对象product的副本,称为savedProduct 当用户修改值时,这些更改将应用于产品 当用户保存修改时,product的值存储在savedProduct中 当用户想要离开活动时,会比较对象product和savedP
product
的特定对象。用户还可以选择保存所做的修改。我的目标是,当用户想要离开活动,并且修改尚未保存时,会显示一个通知,告知用户修改尚未保存
为此,我实施了以下步骤:
OnCreate
方法中,创建对象product
的副本,称为savedProduct
产品
product
的值存储在savedProduct
中product
和savedProduct
。当它们不同时,会通知用户产品
中的字段时,这些更改都会自动应用于保存的产品
。这是一个问题,因为它们现在总是相等的,savedProduct
不再保存保存的数据
我认为问题在于如何初始化savedProduct
。下面是我如何尝试初始化savedProduct
的几个示例
Product product, savedProduct;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activitylayout);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if (bundle != null) {
product = (Product) bundle.getSerializable("product");
if (product != null) {
savedProduct = product;
}
}
}
及
当用户修改值时,修改按以下方式存储到产品中
product.setName(nameEditText.getText().toString().trim());
product.setPrice(priceEditText.getText().toString().trim());
当你这样做的时候:
productUpToDate = product;
productUpToDate = (Product) SerializationUtils.clone(product);
您必须记住,这两个变量现在只是引用同一个对象。当你修改一个,它将修改另一个。你可以这样做:
productUpToDate = product;
productUpToDate = (Product) SerializationUtils.clone(product);
当你这样做的时候:
productUpToDate = product;
productUpToDate = (Product) SerializationUtils.clone(product);
您必须记住,这两个变量现在只是引用同一个对象。当你修改一个,它将修改另一个。你可以这样做:
productUpToDate = product;
productUpToDate = (Product) SerializationUtils.clone(product);
我在代码中没有看到任何对SavedProduct
的引用。请让问题和代码保持一致。哦,那是个错误,现在已经修复了!我在代码中没有看到任何对SavedProduct
的引用。请让问题和代码保持一致。哦,那是个错误,现在已经修复了!