diff --git a/app/src/main/java/luyao/util/ktx/ui/SharedPreferencesActivity.kt b/app/src/main/java/luyao/util/ktx/ui/SharedPreferencesActivity.kt
index c58e3d1..5c17b00 100644
--- a/app/src/main/java/luyao/util/ktx/ui/SharedPreferencesActivity.kt
+++ b/app/src/main/java/luyao/util/ktx/ui/SharedPreferencesActivity.kt
@@ -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"))
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sharedperferences.xml b/app/src/main/res/layout/activity_sharedperferences.xml
index 787e72a..7f8139d 100644
--- a/app/src/main/res/layout/activity_sharedperferences.xml
+++ b/app/src/main/res/layout/activity_sharedperferences.xml
@@ -36,4 +36,9 @@
android:text="putMulti"
style="@style/NormalButton"/>
+
+
\ No newline at end of file
diff --git a/ktx/src/main/java/luyao/util/ktx/ext/sp/SharedPreferencesExt.kt b/ktx/src/main/java/luyao/util/ktx/ext/sp/SharedPreferencesExt.kt
index ab24890..d8f3a33 100644
--- a/ktx/src/main/java/luyao/util/ktx/ext/sp/SharedPreferencesExt.kt
+++ b/ktx/src/main/java/luyao/util/ktx/ext/sp/SharedPreferencesExt.kt
@@ -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 Context.putSpValue(name: String, value: T) = sp().edit {
+fun 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 Activity.putSpValue(name: String, value: T) = sp().edit {
+fun 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 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 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 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 serialize(obj: T): String {
val byteArrayOutputStream = ByteArrayOutputStream()
val objectOutputStream = ObjectOutputStream(