如果EditText中的信息为空,SharedPreferences是否会接受它,从而保持原始数据的存储


package com.example.testapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

loadData()
bt_button.setOnClickListener {
saveData()
}
}
private fun saveData() {
val usernameText = et_username.text.toString()
tv_username.text = usernameText
val ipText = et_ipaddress.text.toString()
tv_ipaddress.text = ipText


val sharedPreferences = getSharedPreferences("sharedPrefs", MODE_PRIVATE)
val editor = sharedPreferences.edit()
editor.apply {
putString("USERNAME_KEY", usernameText)
putString("IP_KEY", ipText)
putBoolean("SWITCH1_KEY", switch1.isChecked)
}.apply()
Toast.makeText(this,"Data saved! :)", Toast.LENGTH_SHORT).show()
}
private fun loadData() {
val sharedPreferences = getSharedPreferences("sharedPrefs", MODE_PRIVATE)
val savedUsername = sharedPreferences.getString("USERNAME_KEY", null)
val savedIp = sharedPreferences.getString("IP_KEY", null)
val savedBoolean = sharedPreferences.getBoolean("SWITCH1_KEY", false)
tv_username.text = savedUsername
tv_ipaddress.text = savedIp
switch1.isChecked = savedBoolean
}
}

这是我现在在MainActivity.kt中使用的代码。我想知道是否有一种方法,如果我在用户名字段中输入数据,但保持ip地址字段为空/空,点击保存按钮(这将把输入的文本放入相应的文本视图(,如果文本视图中已经有数据,它不会同时覆盖,也不会只覆盖有数据的文本视图;从理论上讲,能够单独拯救他们。

只使用这个?

editor.apply {
putString("USERNAME_KEY", usernameText)
if (ipText.isNotEmpty()) putString("IP_KEY", ipText)
putBoolean("SWITCH1_KEY", switch1.isChecked)
}.apply()

同样在设置文本时:

if (ipText.isNotEmpty()) tv_ipaddress.text = ipText

您可以检查EditText值是否为空,这取决于您可以将其设置为SharedPreferences的值。

if (!TextUtils.isEmpty(usernameText) && (usernameText!=null)){
// store in the preference
}

最新更新