为什么有意传递给其他活动时从包裹中获得错误的值?

问题描述 投票:0回答:1

我正在尝试通过适配器将数据从适配器传递到活动。

我正在检查复选框

            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);

但是在活动中,我没有收到传递的布尔值。在活动的onCreate中:

    Intent intent = getIntent();
    if (intent != null) {
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            subCategory = (SubCategory) bundle.getParcelable("productModel");
        }
    }
    allProductsSelected = subCategory.isCategorySelected();

为什么我没有得到我要传递的价值?

android android-intent parcelable
1个回答
0
投票

实际上,我的Model类不正确。

我首先正确地实现了所有的模型类n。

但是为了获得额外的功能,我在模型中加入了checkbox并创建了setter吸气剂。但是未更新Parcelable的必需方法。

解决方案:

我删除了Parcelable的三种自动生成的方法。

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

并用Alt+Enter重新创建。

就是这样。

这有点无知,我浪费了很多时间。只是认为这可能对某人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.