【发布时间】:2022-07-05 17:15:53
【问题描述】:
我试图在屏幕翻转后单击 getName 按钮时获取我的 edittext1.text,但它不起作用。 应该如何工作
- 向 et1 添加一些文本
- 点击 setName 然后 tv1 出现 (tv1.text = et1.text, var "name" = tv1.text)
- 翻转屏幕
- 单击getName(在et1 必须是我们放入的值“名称” SaveInstanceState 之前)
我是菜鸟,希望你能帮助我!提前致谢。
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"
}
【问题讨论】:
-
翻转意味着横向模式!?
-
当你旋转屏幕时,Activity 被重新创建(
onCreate方法被调用)。做你的工作以获得那里的名字
标签: android kotlin onsaveinstancestate