fix(sp) : 指定 sharedpreferences 文件名称
This commit is contained in:
parent
60bdfdf128
commit
c4e8f59878
|
|
@ -23,6 +23,7 @@ class SharedPreferencesActivity : BaseActivity() {
|
|||
|
||||
override fun initData() {
|
||||
|
||||
|
||||
putInt.setOnClickListener {
|
||||
putSpValue("int", 1)
|
||||
toast(getSpValue("int", 0).toString())
|
||||
|
|
@ -33,7 +34,7 @@ class SharedPreferencesActivity : BaseActivity() {
|
|||
}
|
||||
putBoolean.setOnClickListener {
|
||||
putSpValue("boolean", true)
|
||||
toast(getSpValue("boolean", false).toString())
|
||||
toast(getSpValue(key = "boolean", default = false).toString())
|
||||
}
|
||||
putString.setOnClickListener {
|
||||
putSpValue("string", "ktx")
|
||||
|
|
@ -47,9 +48,16 @@ class SharedPreferencesActivity : BaseActivity() {
|
|||
putSpValue("tag1", 1)
|
||||
putSpValue("tag2", false)
|
||||
putSpValue("tag3", Person("bingxin", 1))
|
||||
toast("${getSpValue("tag1",0)}\n" +
|
||||
"${getSpValue("tag2",true)}\n" +
|
||||
"${getSpValue("tag3",Person("default",0))}")
|
||||
toast(
|
||||
"${getSpValue("tag1", 0)}\n" +
|
||||
"${getSpValue("tag2", true)}\n" +
|
||||
"${getSpValue("tag3", Person("default", 0))}"
|
||||
)
|
||||
}
|
||||
|
||||
putAnotherFile.setOnClickListener {
|
||||
putSpValue("another","from another sp file",name = "another")
|
||||
toast(getSpValue("another","null",name = "another"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -36,4 +36,9 @@
|
|||
android:text="putMulti"
|
||||
style="@style/NormalButton"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
android:id="@+id/putAnotherFile"
|
||||
android:text="putAnotherFile"
|
||||
style="@style/NormalButton"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -23,49 +23,60 @@ inline fun SharedPreferences.edit(commit: Boolean = false, action: SharedPrefere
|
|||
editor.apply()
|
||||
}
|
||||
|
||||
fun Context.sp(name: String = packageName, mode: Int = Context.MODE_PRIVATE) =
|
||||
fun Context.sp(name: String = packageName, mode: Int = Context.MODE_PRIVATE): SharedPreferences =
|
||||
getSharedPreferences(name, mode)
|
||||
|
||||
fun Activity.sp(name: String = packageName, mode: Int = Context.MODE_PRIVATE) =
|
||||
fun Activity.sp(name: String = packageName, mode: Int = Context.MODE_PRIVATE): SharedPreferences =
|
||||
getSharedPreferences(name, mode)
|
||||
|
||||
|
||||
fun <T> Context.putSpValue(name: String, value: T) = sp().edit {
|
||||
fun <T> Context.putSpValue(name: String = packageName, key: String, value: T) = sp(name).edit {
|
||||
when (value) {
|
||||
is Long -> putLong(name, value)
|
||||
is String -> putString(name, value)
|
||||
is Int -> putInt(name, value)
|
||||
is Boolean -> putBoolean(name, value)
|
||||
is Float -> putFloat(name, value)
|
||||
else -> putString(name, serialize(value))
|
||||
is Long -> putLong(key, value)
|
||||
is String -> putString(key, value)
|
||||
is Int -> putInt(key, value)
|
||||
is Boolean -> putBoolean(key, value)
|
||||
is Float -> putFloat(key, value)
|
||||
else -> putString(key, serialize(value))
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> Activity.putSpValue(name: String, value: T) = sp().edit {
|
||||
fun <T> Activity.putSpValue(key: String, value: T, name: String = packageName) = sp(name).edit {
|
||||
when (value) {
|
||||
is Long -> putLong(name, value)
|
||||
is String -> putString(name, value)
|
||||
is Int -> putInt(name, value)
|
||||
is Boolean -> putBoolean(name, value)
|
||||
is Float -> putFloat(name, value)
|
||||
else -> putString(name, serialize(value))
|
||||
is Long -> putLong(key, value)
|
||||
is String -> putString(key, value)
|
||||
is Int -> putInt(key, value)
|
||||
is Boolean -> putBoolean(key, value)
|
||||
is Float -> putFloat(key, value)
|
||||
else -> putString(key, serialize(value))
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> Context.getSpValue(key: String, default: T) :T{
|
||||
sp().run {
|
||||
val result = when (default) {
|
||||
is Long -> getLong(key, default)
|
||||
is String -> getString(key, default)
|
||||
is Int -> getInt(key, default)
|
||||
is Boolean -> getBoolean(key, default)
|
||||
is Float -> getFloat(key, default)
|
||||
else -> deSerialization(getString(key, serialize(default)))
|
||||
}
|
||||
return result as T
|
||||
fun <T> Context.getSpValue(key: String, default: T, name: String = packageName ): T = sp(name).run {
|
||||
val result = when (default) {
|
||||
is Long -> getLong(key, default)
|
||||
is String -> getString(key, default)
|
||||
is Int -> getInt(key, default)
|
||||
is Boolean -> getBoolean(key, default)
|
||||
is Float -> getFloat(key, default)
|
||||
else -> deSerialization(getString(key, serialize(default)))
|
||||
}
|
||||
result as T
|
||||
}
|
||||
|
||||
fun <T> Activity.getSpValue(key: String, default: T, name: String = packageName): T = sp(name).run {
|
||||
val result = when (default) {
|
||||
is Long -> getLong(key, default)
|
||||
is String -> getString(key, default)
|
||||
is Int -> getInt(key, default)
|
||||
is Boolean -> getBoolean(key, default)
|
||||
is Float -> getFloat(key, default)
|
||||
else -> deSerialization(getString(key, serialize(default)))
|
||||
}
|
||||
return result as T
|
||||
}
|
||||
|
||||
|
||||
private fun <T> serialize(obj: T): String {
|
||||
val byteArrayOutputStream = ByteArrayOutputStream()
|
||||
val objectOutputStream = ObjectOutputStream(
|
||||
|
|
|
|||
Loading…
Reference in New Issue