当意图传递给其他活动时,为啥从 parcelable 中得到错误的值?
Posted
技术标签:
【中文标题】当意图传递给其他活动时,为啥从 parcelable 中得到错误的值?【英文标题】:Why getting wrong value from parcelable when passed with intent to other activity?当意图传递给其他活动时,为什么从 parcelable 中得到错误的值? 【发布时间】:2020-03-31 04:40:19 【问题描述】:我正在尝试通过捆绑将数据从适配器传递到活动。
我正在检查一个复选框
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();
为什么我没有得到我传递的价值??
【问题讨论】:
请接受您的回答,因为这会将问题从未回答的问题列表中删除,并且可能会帮助遇到类似问题的其他人。 【参考方案1】:实际上,我的 Model 类不正确。
我首先正确地实现了模型类 n。
但对于额外的功能,我在模型中包含了 checkbox
并创建了 setter getter。但没有更新Parcelable
所需的方法。
解决方案:
我删除了Parcelable
的三个自动生成方法。
-
构造函数
创作者
writeToParcel
并使用Alt+Enter
重新创建它们。
就是这样。
这有点无知,我浪费了很多时间。只是觉得它可能会对某人有所帮助。
【讨论】:
你也可以不使用bundle,intents有一个putExtra方法,它接受一个parcelable,即putExtra("productModel", myParcelableObject),然后用getIntentI()把它放在另一边。 getParcelableExtra(...);以上是关于当意图传递给其他活动时,为啥从 parcelable 中得到错误的值?的主要内容,如果未能解决你的问题,请参考以下文章