我在xml文件中使用了一个edittext,我想在用户写一个文本并onResume或onDestroy程序或使用共享首选项功能关闭同一程序时,将文本保存在edittext中,但不幸的是程序崩溃并关闭
MainActivity.kt:
class MainActivity : AppCompatActivity() {
private lateinit var editText: EditText
private val name = "MY_TEXT"
private val key = "myStoreData"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
editText = findViewById(R.id.edittext)
}
override fun onResume() {
super.onResume()
var sharedPreferences: SharedPreferences = getSharedPreferences(name, MODE_PRIVATE)
val myValue = sharedPreferences.getString(key,"")
editText.setText(myValue)
}
override fun onDestroy() {
super.onDestroy()
var sharedPreferences: SharedPreferences = getSharedPreferences(name, MODE_PRIVATE)
var edit = sharedPreferences.edit()
edit.putString("my Store Data",editText.text.toString())
edit.apply()
}
}
字符串
Activity_main.xml:
<EditText
android:id="@+id/editTextText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text"
android:minHeight="48dp"
android:text="text"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="Autofill,HardcodedText,LabelFor" />
型
我想程序保存文本,但程序崩溃
2条答案
按热度按时间wj8zmpe11#
根据提供的代码和XML布局,我可以看到可能导致崩溃的几个问题:
**1. XML布局问题:**在您的XML布局中,EditText的ID设置为
editTextText
,但在您的MainActivity.kt
文件中,您试图使用IDedittext
查找EditText。您需要使用在XML布局中用于查找EditText的相同ID。如下所示更新onCreate方法:字符串
**2. SharedPreferences的Key不正确:**在
onDestroy
方法中,将文本保存到SharedPreferences时使用的键与在onResume
方法中检索数据时使用的键不同。更新onDestroy
方法中的键以匹配onResume
中使用的键:型
在进行这些更改之后,代码应按预期工作,并保存在EditText中输入的文本。
osh3o9ms2#
出现崩溃是因为XML中定义的editText的ID与您在Activity中使用的ID不同。
而不是这样做:
字符串
这样做:
型
并替换:
型
与
型
希望这能帮上忙。