onsaveinstancestate不处理状态
我正在尝试在屏幕翻转后单击“ getName”按钮时获得我的deDittext1.text,但它不起作用。 它应该如何工作
- 将一些文本添加到ET1
- 单击setName,然后tv1出现 (tv1.text = et1.text,var“ name” = tv1.text)
- 翻转屏幕
- 单击getName(在ET1处,我们必须将其放在 在以前保存InstanceState)
我是一个菜鸟,希望您能帮助我!提前致谢。 < 3
class MainActivity : AppCompatActivity() {
private var name: String? = null
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater).also { setContentView(it.root) }
binding.setButton.setOnClickListener { setName() }
binding.getButton.setOnClickListener { getName() }
}
fun getName(){
binding.et1.setText(name)
}
fun setName(){
binding.tv1.text = binding.et1.text
name = binding.tv1.text.toString()
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
name = savedInstanceState.getString(KEY_NAME, "unknown")
}
override fun onSaveInstanceState(outState: Bundle, outPersistentState: PersistableBundle) {
super.onSaveInstanceState(outState, outPersistentState)
outState.putString(KEY_NAME, name)
}
companion object{
private val KEY_NAME = "NAME"
}
I'm trying to get my edittext1.text while clicking on the getName button after screen flipped but it doesn't work.
How it should work
- adding some text to the et1
- click setName then tv1 appears
(tv1.text = et1.text, var "name" = tv1.text) - flip the screen
- click getName (at the et1 have to be value "name" that we put to the
SaveInstanceState before)
I'm a noobie, hope You can help me! Thanks in advance. <3
class MainActivity : AppCompatActivity() {
private var name: String? = null
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater).also { setContentView(it.root) }
binding.setButton.setOnClickListener { setName() }
binding.getButton.setOnClickListener { getName() }
}
fun getName(){
binding.et1.setText(name)
}
fun setName(){
binding.tv1.text = binding.et1.text
name = binding.tv1.text.toString()
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
name = savedInstanceState.getString(KEY_NAME, "unknown")
}
override fun onSaveInstanceState(outState: Bundle, outPersistentState: PersistableBundle) {
super.onSaveInstanceState(outState, outPersistentState)
outState.putString(KEY_NAME, name)
}
companion object{
private val KEY_NAME = "NAME"
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要使用
OnSaveInstancestate
函数的另一个超载函数:一个只有一个参数:fun onSaveInstanceState(OnsaveInstate:oftstate:bundle)
您的代码应以下内容:
You need to use another overload of the
onSaveInstanceState
function: the one with with just one parameter:fun onSaveInstanceState(outState: Bundle)
Your code should look the following: