【发布时间】:2019-10-30 01:17:46
【问题描述】:
我在 Kotlin 中有两个布局,每个布局都有一个 Button,我只想在两者之间切换。所以我向两者都添加了一个 OnClickListener
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button_foward.setOnClickListener(View.OnClickListener {
setContentView(R.layout.second)
button_back.setOnClickListener(View.OnClickListener {
setContentView(R.layout.activity_main)
})
})
嗯,它确实有效。我可以转到第二个布局并切换回第一个布局,但我无法再次打开第二个布局!
我想在切换回主视图后我必须重新定义监听器,所以我创建了两个单独的函数来设置视图。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this@MainActivity.createMainScreen()
})
}
fun createMainScreen(){
setContentView(R.layout.activity_main)
button_foward.setOnClickListener(View.OnClickListener {
this@MainActivity.createSecondScreen()
})
}
fun createSecondScreen(){
setContentView(R.layout.second)
button_back.setOnClickListener(View.OnClickListener {
this@MainActivity.createMainScreen()
})
}
当我试图在 Java 中解决同样的问题时,这种方法很有效,但在 Kotlin 中,我仍然只能使用每个 Button 一次。
我该如何解决这个问题?可以(我必须)在重新定义之前重置按钮吗?
或者是否有使用 setContentView 的替代方法?
感谢您的帮助!
【问题讨论】:
-
从包含的代码来看,很难确定 button_back 设置是否正确。在哪里/何时分配?尝试在使用它的行上设置一个断点,看看它是否是你认为的那样。
标签: android button kotlin onclicklistener setcontentview