为什么在有意传递给其他 activity 时从 parcelable 得到错误的值?
Why getting wrong value from parcelable when passed with intent to other activity?
我正在尝试通过捆绑将数据从适配器传递到 activity。
我正在勾选复选框
checkboxSelectSubCategory.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
productModelsAL.get(getAdapterPosition()).setCategorySelected(true);
}else {
productModelsAL.get(getAdapterPosition()).setCategorySelected(false);
}
}
});
并在我调试的对象中正确设置数据:
Intent intent = new Intent(mContext, SelectProductActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelable("productModel", productModelsAL.get(getAdapterPosition()));
intent.putExtras(bundle);
mContext.startActivity(intent);
但是在 activity 我没有收到传递的布尔值。
在活动的 onCreate 中:
Intent intent = getIntent();
if (intent != null) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
subCategory = (SubCategory) bundle.getParcelable("productModel");
}
}
allProductsSelected = subCategory.isCategorySelected();
为什么我没有得到传递的值??
实际上,我的模型 class 不正确。
我首先正确实现了模型 class n。
但是为了获得额外的功能,我在模型中包含了 checkbox
并创建了 setter 吸气剂。但是 没有更新 Parcelable
所需的方法。
解法:
我删除了 Parcelable
的三个自动生成的方法。
- 构造函数
- 创作者
- writeToParcel
并用 Alt+Enter
重新创建了它们。
就是这样。
它有点无知,我浪费了很多时间。只是觉得它可能对某人有帮助。
我正在尝试通过捆绑将数据从适配器传递到 activity。
我正在勾选复选框
checkboxSelectSubCategory.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
productModelsAL.get(getAdapterPosition()).setCategorySelected(true);
}else {
productModelsAL.get(getAdapterPosition()).setCategorySelected(false);
}
}
});
并在我调试的对象中正确设置数据:
Intent intent = new Intent(mContext, SelectProductActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelable("productModel", productModelsAL.get(getAdapterPosition()));
intent.putExtras(bundle);
mContext.startActivity(intent);
但是在 activity 我没有收到传递的布尔值。 在活动的 onCreate 中:
Intent intent = getIntent();
if (intent != null) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
subCategory = (SubCategory) bundle.getParcelable("productModel");
}
}
allProductsSelected = subCategory.isCategorySelected();
为什么我没有得到传递的值??
实际上,我的模型 class 不正确。
我首先正确实现了模型 class n。
但是为了获得额外的功能,我在模型中包含了 checkbox
并创建了 setter 吸气剂。但是 没有更新 Parcelable
所需的方法。
解法:
我删除了 Parcelable
的三个自动生成的方法。
- 构造函数
- 创作者
- writeToParcel
并用 Alt+Enter
重新创建了它们。
就是这样。
它有点无知,我浪费了很多时间。只是觉得它可能对某人有帮助。