我使用Hawk库来保存数据。我面临检索数据的问题。
当我执行下一个代码来检查存储的对象的值时,但是sais它无法转换该值。
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to com.test.app.model.AtvLanguage
代码:
if(Hawk.contains("ATV_LANGUAGE")){
atvLanguage = (AtvLanguage)Hawk.get("ATV_LANGUAGE"); // Fail point
}else{
atvLanguage.setLanguageCodes("", getString(R.string.str_en));
}
put方法:
public void updateSelectedLanguage(String iso6391, String iso6392){
AtvLanguage atvLanguageTmp = new AtvLanguage(iso6391, iso6392);
Hawk.put("ATV_LANGUAGE", atvLanguageTmp);
}
AtvLanguage pojo:
public class AtvLanguage implements Serializable {
@SerializedName("iso6391")
@Expose
private String iso6391;
@SerializedName("iso6392")
@Expose
private String iso6392;
public AtvLanguage() {
}
public AtvLanguage(String iso6391, String iso6392) {
setLanguageCodes(iso6391, iso6392);
}
public String getIso6391() {
return iso6391;
}
public void setIso6391(String iso6391) {
this.iso6391 = iso6391;
}
public String getIso6392() {
return iso6392;
}
public void setIso6392(String iso6392) {
this.iso6392 = iso6392;
}
// ISO 639-2 is the language code with 3 chars, like ENG or SPA.
public void setLanguageCodes(String iso6391, String iso6392){
if(iso6391.isEmpty() && !iso6392.isEmpty()){
if(iso6392.equalsIgnoreCase("ENG"))
setIso6391("en");
else if(iso6392.equalsIgnoreCase("ESP"))
setIso6391("es");
setIso6392(iso6392);
}else if(!iso6391.isEmpty() && iso6392.isEmpty()){
if(iso6391.equalsIgnoreCase("en"))
setIso6392("ENG");
else if(iso6391.equalsIgnoreCase("es"))
setIso6392("ESP");
setIso6391(iso6391);
}
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AtvLanguage that = (AtvLanguage) o;
return new EqualsBuilder()
.append(getIso6391(), that.getIso6391())
.append(getIso6392(), that.getIso6392())
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.append(getIso6391())
.append(getIso6392())
.toHashCode();
}
@Override
public String toString() {
return "AtvLanguage{" +
"iso6391='" + iso6391 + '\'' +
", iso6392='" + iso6392 + '\'' +
'}';
}
}