在Android Studio中,我正在编写一个活动,允许用户修改一个名为
product
. 用户还可以选择保存所做的修改。我的目标是,当用户想要离开活动,并且修改尚未保存时,会显示一个通知,告诉用户修改尚未保存。
为此,我实施了以下步骤:
-
在
OnCreate
方法,对象的副本
产品
被称为
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 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 = new Product(null,null);
savedProduct.setName(product.getName());
savedProduct.setPrice(product.getPrice());
}
}
}
当用户修改值时,修改被存储到
产品
以以下方式。
product.setName(nameEditText.getText().toString().trim());
product.setPrice(priceEditText.getText().toString().trim());