我使用Gson将自定义模型的arrayList保存到共享首选项中
存储代码:
ArrayList<DownloadProgressDataModel> arrayList = getArrayListFromPref(downloadProgressDataModel); SharedPreferences.Editor prefsEditor = getSharedPreferences("APPliCATION_PREF", MODE_PRIVATE).edit(); Gson gson = new Gson(); String Json = gson.toJson(arrayList); prefsEditor.putString("DownloadManagerList", Json); prefsEditor.apply(); }
检索
ArrayList<DownloadProgressDataModel> arrayList; Gson gson = new Gson(); SharedPreferences mPrefs = getSharedPreferences("APPliCATION_PREF", MODE_PRIVATE); String Json = mPrefs.getString("DownloadManagerList", ""); if (Json.isEmpty()) { arrayList = new ArrayList<DownloadProgressDataModel>(); } else { Type uriPath = new Typetoken<ArrayList<DownloadProgressDataModel>>() { }.getType(); arrayList = gson.fromJson(Json, uriPath); <------ Error line }
但是我得到的错误行:无法实例化类androID.net.Uri
模型
public class DownloadProgressDataModel { private Uri uriPath; private long referenceID; public Uri getUriPath() { return uriPath; } public voID setUriPath(Uri uriPath) { this.uriPath = uriPath; } public long getReferenceID() { return referenceID; } public voID setReferenceID(long referenceID) { this.referenceID = referenceID; }}
解决方法:
Uri类构造函数是私有的,它是一个抽象类. Gson尝试使用Reflection API为Uri类创建一个新对象(我们不能为抽象类创建一个对象).如此简单的解决方案是将uriPath更改为String而不是Uri.
private String uriPath;
总结 以上是内存溢出为你收集整理的java – Android:无法调用没有args的私有android.net.Uri()全部内容,希望文章能够帮你解决java – Android:无法调用没有args的私有android.net.Uri()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)