无法使用 Kotlin 在 Android sharedPreferences 中保存数据
Posted
技术标签:
【中文标题】无法使用 Kotlin 在 Android sharedPreferences 中保存数据【英文标题】:Not able to save data in Android sharedPreferences using Kotlin 【发布时间】:2021-04-08 14:42:18 【问题描述】:我正在尝试配置 sharedPreferences 以存储用户访问令牌。我正在关注本教程:https://auth0.com/blog/authenticating-android-apps-developed-with-kotlin/#Securing-Kotlin-App-with-Auth0
这是我的代码:
MainActivity.kt
private fun login()
val account = Auth0(getString(R.string.com_auth0_client_id), getString(R.string.auth0_domain))
account.isOIDCConformant = true
account.isLoggingEnabled = true
WebAuthProvider.login(account)
.withScheme(getString(R.string.scheme))
.withAudience(getString(R.string.audience))
.start(this@MainActivity, AuthenticationHandler(this@MainActivity))
AuthenticationHandler.kt
override fun onSuccess(credentials: Credentials)
runOnUiThread
Runnable
CredentialsManager.saveCredentials(context, credentials)
val intent = Intent(this@AuthenticationHandler, MainActivity::class.java)
startActivity(intent)
CredentialsManager.kt(它是一个对象/单例)
fun saveCredentials(context: Context, credentials: Credentials)
val sp = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE)
sp!!.edit().putString(ACCESS_TOKEN, credentials.accessToken)
.apply()
fun getAccessToken(context: Context): String?
val sp = context.getSharedPreferences(
PREFERENCES_NAME, Context.MODE_PRIVATE)
return sp!!.getString(ACCESS_TOKEN, null)
任何帮助将不胜感激!当我尝试从 sharedPreferences 检索访问令牌或使用它发出一个 post http 请求时,我得到的只是空指针异常。
我正在这样检索它:(我得到空值)
println(CredentialsManager.getAccessToken(this@MainActivity))
【问题讨论】:
你如何确定它没有保存。您显示的内容应该可以工作,但可能您没有正确检索它。 @Tenfour04 我在做 val sp = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE) return sp!!.getString(ACCESS_TOKEN, null) 我在做 print(sp!!.getString(ACCESS_TOKEN, null) ) 代码看起来不错。检查以确保saveCredentials
函数实际上被调用。您可以在该函数中记录一些内容或使用调试工具。
如果您需要有关崩溃的帮助,请也发布堆栈跟踪。无论如何,看起来你在实例化Intent
时正在处理你的AuthenticationHandler´ as a
Context`,但你自己也在实例化AuthenticationHandler
,所以它不能作为Context
工作。
【参考方案1】:
@Lucy 郝 请检查正在写入的值,打印它,并检查它是否为空。
【讨论】:
以上是关于无法使用 Kotlin 在 Android sharedPreferences 中保存数据的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Kotlin 在 Android sharedPreferences 中保存数据
使用 RecyclerView 的多视图 - Kotlin(Android) - 无法切换视图