为什么在有意传递给其他 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 的三个自动生成的方法。

  1. 构造函数
  2. 创作者
  3. writeToParcel

并用 Alt+Enter 重新创建了它们。

就是这样。

它有点无知,我浪费了很多时间。只是觉得它可能对某人有帮助。