поэтому у меня есть User
класс, подобный этому
class User() : Parcelable {
var uid : String = ""
var fullname : String = ""
var email : String = ""
var domicile : String = "Jakarta"
var profilePicturePath : String = ""
var createdAt : Date = Calendar.getInstance().time
var verified : Boolean = false
var banned : Boolean = false
}
, как вы можете видеть, createdAt
в типе данных Date. после извлечения пользовательских данных с сервера, затем я сохраняю эти пользовательские данные в общем предпочтении, используя gson
, например
val gson = Gson()
val sharedPref = context.getSharedPreferences(SHARED_PREF_DATA, Context.MODE_PRIVATE)
val json = gson.toJson(user)
with(sharedPref.edit()) {
putString(USER_DATA, json)
apply()
}
, на этом этапе пользователь все еще использует данные в 24-часовом формате, как показано на рисунке ниже в их Android настройки телефона при сохранении пользовательских данных в общем предпочтении с помощью gson
, но если пользователь отключает этот 24-часовой формат, чтобы использовать 13:00 PM форматировать, тогда оно взломает sh мое приложение. это произошло в этом коде при загрузке сохраненных пользовательских данных из общего предпочтения
val gson = Gson()
val sharedPref = context.getSharedPreferences(SHARED_PREF_DATA, Context.MODE_PRIVATE)
val json = sharedPref.getString(USER_DATA, "")
if (json == null) {
return null
} else {
return gson.fromJson(json, User::class.java) // <----- In This Line !!!
}
, похоже, не удалось десериализовать createdAt
до даты из общего предпочтения, если пользователь изменил свой формат даты. вот ошибка
Caused by: com.google.gson.JsonSyntaxException: Jan 25, 2020 11:32:38
at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:87)
at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:75)
at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:46)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
at com.google.gson.Gson.fromJson(Gson.java:932)
at com.google.gson.Gson.fromJson(Gson.java:897)
at com.google.gson.Gson.fromJson(Gson.java:846)
at com.google.gson.Gson.fromJson(Gson.java:817)
Я должен очистить кэш / данные приложения, чтобы предотвратить сбои приложения, возможно, потому что оно было восстановлено с использованием формата 13:00
что я должен сделать, чтобы решить эту Cra sh? Java или Kotlin все в порядке