gpt4 book ai didi

java - Gson "toJson"函数崩溃(Android Studio)

转载 作者:行者123 更新时间:2023-12-02 02:07:36 26 4
gpt4 key购买 nike

当我使用 Gson 库将 ArrayList 转换为字符串时,我的应用程序崩溃了。但是,它仅在我的智能手机(lg g5、Android 7.0)上崩溃,而在 Android Studio 模拟器(Nexus 6、Android 9)上则不会崩溃。

Gson是否不兼容Android 7.0?

我尝试过旧版本的 Gson。

这是在 Activity 中

ArrayList<Character> mCharacters = new ArrayList<>();
private SharedPreferences mPreferences;
mPreferences = PreferenceManager.getDefaultSharedPreferences(this);


private void saveGame(){
Gson gson = new Gson();
String json = gson.toJson(mCharacters); //crash here
mPreferences.edit().putString("characters", json).apply();
}


@Override
protected void onDestroy() {
super.onDestroy();
saveGame();
}

这是我的角色 java 类

public class Character {
private String mName;
private boolean mGirl;
private Drawable mPicture;

public Character(String name, boolean girl, Drawable picture) {
mName = name;
mGirl = girl;
mPicture = picture;
}

public String getName() {
return mName;
}

public boolean isGirl() {
return mGirl;
}

public Drawable getPicture() {
return mPicture;
}


}

我的 mCharacters 在崩溃之前有 2 个字符。

我没有收到任何错误消息,但我的屏幕卡住并且调试器说应用程序仍在运行。

最佳答案

Drawable 无法转换为 json 对象。所以你的应用程序崩溃了。

您应该将可绘制图像转换为位图并存储在文件存储中,并使用文件路径而不是可绘制对象。

如果您的可绘制图像是从 res/drawable 引用的,那么您还可以使用 int 值 (R.drawable.image_name) 并使用该 int 值而不是 Drawable对象。

关于java - Gson "toJson"函数崩溃(Android Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57350020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com