在 int activity 之前是否存在 EditText 数据?
Existence of EditText data prior to int activity?
有activity、activity。我在A的EditText中输入文字,点击按钮,移动到B,做其他活动,再回到A。此时,我希望文字保留在A的EditText中。我应该怎么办?已尝试 startActivityForResult,但未调用 onActivityResult()。这是不是走错了?
由于 Activity 当你移动到 B 时 A 被破坏,为了恢复你在 EditText 中的数据,你首先必须将它存储在某个地方。为此,您可以使用 Activity 中的 onSaveInstanceState()
方法,该方法将在 Activity 被销毁之前调用。
然后您可以使用 onRestoreInstanceState(savedInstanceState: Bundle?)
或直接在 onCreate(savedInstanceState: Bundle?)
中恢复数据
例如:
const val TEXT_KEY = "editText_text"
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt(TEXT_KEY, yourEditText.text)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
super.onRestoreInstanceState(savedInstanceState)
savedInstanceState?.run {
yourEditText.text = getString(TEXT_KEY)
}
}
注意:您应该只使用 onSaveInstanceState 保存简单、轻量级的数据。
有activity、activity。我在A的EditText中输入文字,点击按钮,移动到B,做其他活动,再回到A。此时,我希望文字保留在A的EditText中。我应该怎么办?已尝试 startActivityForResult,但未调用 onActivityResult()。这是不是走错了?
由于 Activity 当你移动到 B 时 A 被破坏,为了恢复你在 EditText 中的数据,你首先必须将它存储在某个地方。为此,您可以使用 Activity 中的 onSaveInstanceState()
方法,该方法将在 Activity 被销毁之前调用。
然后您可以使用 onRestoreInstanceState(savedInstanceState: Bundle?)
或直接在 onCreate(savedInstanceState: Bundle?)
例如:
const val TEXT_KEY = "editText_text"
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt(TEXT_KEY, yourEditText.text)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
super.onRestoreInstanceState(savedInstanceState)
savedInstanceState?.run {
yourEditText.text = getString(TEXT_KEY)
}
}
注意:您应该只使用 onSaveInstanceState 保存简单、轻量级的数据。