【发布时间】:2020-12-15 23:04:45
【问题描述】:
我的转换器类:
public class CategoriesConverter extends Item_get {
@TypeConverter
public static Item_get.Food_type toFood_type(int food_type){
if(food_type == SWEETS.getCode()){
return SWEETS;
}else if(food_type == DRINKS.getCode()){
return DRINKS;
}else if(food_type == OTHER.getCode()){
return OTHER;
}else {
throw new IllegalArgumentException("Error Status");
}
}
@TypeConverter
public static int toInt(Item_get.Food_type food_type){
return food_type.getCode();
}
}
在我的Recyclerview 中,当我点击编辑图片时,我会像这样放入下一个活动数据:
@Override
public void onEditClick(Item_get item_get) {
Intent intent = new Intent(getActivity(), Edit_Delete_details.class);
intent.putExtra("KEY1", item_get);
intent.putExtra(Edit_Delete_details.EXTRA_ID, item_get.getId());
start_next_activity.launch(intent);
}
在第二个活动中,我这样做:
intent = getIntent();
item_get = intent.getParcelableExtra("KEY1");
id = intent.getIntExtra(EXTRA_ID, default: -1);
name = item_get.getName_Product();
amount = item_get.getAmount();
Item_get.Food_type food_type = item_get.food_type.getCode();
上面带有food_type 的行总是返回null,我不知道为什么,因为在第一个活动中这样的东西效果很好:
String f = String.valueOf(item_get.food_type); <-- Return String representation of enum like: SWEETS
OR
int n = item_get.food_type.getCode(); <-- Return integer of actually selected enum category like: 1
当我这样做时:
int n = item_get.food_type.getCode();
intent.putExtra("LINK", n);
效果很好。我在活动 2 中有它。
但为什么我不能将它与整个 item_get 对象一起发送?就像 Name Product 和 Amount 一样,我必须把它放到第二个变量中?
问题是当我想将数据从活动 2 发送回活动 1 时,我收到如下错误:
原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int com.example.project.Item_get$Food_type.getCode()”
当我更改 CategoriesConverter 类时:
@TypeConverter
public static int toInt(Item_get.Food_type food_type){
From
return food_type.getCode();
to
return 1;
}
不会发生错误(这不是解决方案),但可能是提示。
我的 Item_get.class 有 enum 像这样:
public enum Food_type{
SWEETS(1),
DRINKS(2),
OTHER(3);
private int code;
Food_type(int code){
this.code = code;
}
public int getCode(){
return code;
}
}
我还在数据库中添加了@TypeConverters。
我读过枚举是 parcelabe 对象。
我正在使用RoomDatabase
那么为什么我从活动 1 更改为活动 2 后得到空对象?
【问题讨论】:
-
请添加堆栈跟踪
标签: java android android-room