当前位置: 首页 > 知识库问答 >
问题:

Android Kotlin SharedPreferences保存错误

仇迪
2023-03-14

我在将数据正确保存到SharedPreferences中时遇到问题。不知何故,最后一个editor.putstring方法被写入了我所有的首选项中,我不知道为什么。

class MainActivity : AppCompatActivity() {

private var firstnameEditText : EditText ? = null
private var lastnameEditText : EditText ?  = null
private var firstnameTextView : TextView ? = null
private var lastnameTextView : TextView ? = null
private var saveButton : Button? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    firstnameEditText = findViewById(R.id.main_activity_firstname_editText) as EditText
    lastnameEditText = findViewById(R.id.main_activity_lastname_editText) as EditText
    firstnameTextView = findViewById(R.id.main_activity_firstname_textView) as TextView
    lastnameTextView = findViewById(R.id.main_activity_lastname_textView) as TextView
    saveButton = findViewById(R.id.main_activity_save_button) as Button
    saveButton?.setOnClickListener { saveData() }
    loadData()
}

private fun loadData(){
    try {
        val sharedPref = getSharedPreferences( getString(R.string.sharedPrefs) , Context.MODE_PRIVATE) ?: return
        val firstname = sharedPref.getString(getString(R.string.firstname_key), "")
        val lastname = sharedPref.getString(getString(R.string.lastname_key), "")
        firstnameTextView?.text = firstname
        lastnameTextView?.text = lastname
    } catch (ex : Exception){
        Log.d("Main", ex.toString())
    }
}

private fun saveData(){
    try {
        val sharedPref = getSharedPreferences( getString(R.string.sharedPrefs) , Context.MODE_PRIVATE) ?: return
        with(sharedPref.edit()){
            putString(getString(R.string.firstname_key), firstnameEditText?.text.toString())
            putString(getString(R.string.lastname_key), lastnameEditText?.text.toString())
            apply()
        }
        loadData()
    } catch (ex : Exception){
        Log.d("Main", ex.toString())
    }
}

根据官方文件,我做的一切都是对的。在此处输入链接描述

如有任何帮助,不胜感激。提前谢了。

共有1个答案

柯锋
2023-03-14

我发现r.string.firstname_keyr.string.lastname_key的值相同。

可以在strings.xml中检查这些值吗

 类似资料:
  • 我在跑步 在我的redis cli上,如果至少有一个键发生了更改,则每10分钟保存一次,但是它给了我: 我在redis官方网站上举了一个例子:http://redis.io/topics/persistence 我做错了什么?

  • 我使用sharedpreferences保存了一些变量,但是我的save方法使应用程序崩溃,出现了空指针异常。 getSharedPreferences()本身不能工作,需要有上下文。在它之前,这可能是一个问题。我已经定义了上下文,导入了SharedPreferences,那么为什么这不起作用呢?

  • 问题内容: 如果在保存之前使用图像,那是正常的。但是,如果我保存并以后使用,则需要旋转90度。我如何确保它不会横向保存? 问题答案: 如果需要以正确的旋转方式保存PNG,则如果方向不正确,则需要重新绘制图像。您可以按以下方式重绘它: 编辑/更新: 对于iOS10 + tvOS10 +,您可以使用: 游乐场测试: 不透明图像的用法: 具有透明度:

  • 当我将大数据保存到hdfs时,我正在体验OOME 我在Spark-Submit中使用这个: 当我增加框架时,现在的错误是:Java.lang.outofMemoryError:Java堆空间,所以我必须将驱动程序内存和执行程序内存增加到2G才能工作。如果累加Collection.value.length是500,000,我需要使用3G。这正常吗? 该文件只有146MB,包含200,000行(对于2

  • 我正在尝试使用来保存图像,但它总是以这个名称保存文件1637955326427.jpg并且文件的大小0 B。 <代码>列表。获取(0)。getDocFile()返回一个文档文件,我也在API 28上测试了这个,谢谢 请注意,此图像已存在于外部存储器中,只需复制即可。 编辑:我删除此代码是重复的。我真的很抱歉。文件工作正常,但盗用了错误的名称。

  • 问题内容: 我正在使用mongodb和redis,redis是我的缓存。 我用redis-py缓存mongodb对象: 使用hgetall(key,obj)从redis获取的obj是: 如您所见,从缓存中获取的obj是str而不是unicode,因此在我的应用中出现错误,例如:’ascii’编解码器无法解码位置12的字节0xe6:序数不在范围(128)中 任何人都可以提出建议吗?感谢你 问题答案: