加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Android:无法调用没有args的私有android.net.Uri()

发布时间:2020-12-15 04:40:27 所属栏目:Java 来源:网络整理
导读:我使用Gson将自定义模型的arraylist保存到共享首选项中 存储代码: ArrayListDownloadProgressDataModel arrayList = getArrayListFromPref(downloadProgressDataModel); SharedPreferences.Editor prefsEditor = getSharedPreferences("APPLICATION_PREF",M
我使用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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读