如何使用SharedPreferences在使用Kotlin、Compose和Navigator的Android应用程序中存储表单数据?

v8wbuo2f  于 2022-12-04  发布在  Kotlin
关注(0)|答案(1)|浏览(271)

我是Android Studio的新手,我正在为一个学习项目创建一个使用Kotlin、Compose和Navigator的应用程序。我想将表单中的数据作为键-值对存储在SharedPreferences中,但尽管我在Compose中找到了example的操作方法,但这不是使用Navigator,我还不知道在哪里使用Navigator结构初始化变量。有人能帮我吗?
在该示例中,这些变量在MainActivity.kt开始时初始化:

class MainActivity : ComponentActivity() {
    lateinit var sharedPreferences: SharedPreferences
    var PREFS_KEY = "prefs"
    var EMAIL_KEY = "email"
    var PWD_KEY = "pwd"
    var e = ""
    var p = ""

然后在setContent中初始化共享首选项:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
              sharedPreferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)

在导航器结构的例子中,我尝试将变量放置在MainActivity文件中,以及我想存储值的导航器片段中。如果我将其放置在MainActivity中,sharedPreference变量在导航器片段中是未知的,当我将其放置在导航器片段的main函数中时,该行:下面的代码显示了一个错误:未解析的引用:getSharedPreferences(我在两个文件中都包含了导入android.content.SharedPreferences)

ql3eal8s

ql3eal8s1#

要使用***SharedPreferences***在使用Kotlin、Compose和Navigator的Android应用程序中存储表单数据,您需要在***MainActivity.kt***文件中创建一个***SharedPreferences***对象。然后使用该对象通过 putString() 和***获取字符串()***方法。然后,在导航器片段中,您可以使用***getSharedPreferences访问***SharedPreferences***对象()***方法.然后可以使用***getString()***和***putString()***方法来访问和存储数据.
请参见示例:
在主活动.kt中:

val sharedPreferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)

在导航器片段.kt中:

val sharedPreferences = activity?.getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)

// To store data
sharedPreferences?.edit { putString("name", name) }

// To retrieve data
val name = sharedPreferences?.getString("name", "")

相关问题