单击按钮后如何切换到另一个 XML 布局?
Posted
技术标签:
【中文标题】单击按钮后如何切换到另一个 XML 布局?【英文标题】:How to switch to another XML layout after click on button? 【发布时间】:2019-07-09 08:28:53 【问题描述】:我想要一个带有逻辑的 kotlin 文件,并且我希望允许用户在两种不同的 XLM 布局之间切换(程序的逻辑仍然相同,但单击按钮时按钮的布局应更改)。
我只是将 setContentView 函数添加到此按钮的 setOnClickListener 以加载 activity_main_second_layout.xml 布局。
PS。 activity_main_second_layout.xml和activity_main.xml差不多,我只是改变了元素的位置(不是元素的名字)
button_switch_to_the_second_design.setOnClickListener
setContentView(R.layout.activity_main_second_layout);
当点击按钮时,voala,布局真的变成了第二个。 但是程序的功能不再起作用,逻辑消失了。看来我需要以某种方式恢复程序的运行以使代码再次运行而不会中断,包括变量丢失。
【问题讨论】:
还有另一种方法,使用片段 【参考方案1】:有很多方法可以做到这一点。
在我看来,您不应该尝试在运行时更改布局 - 这是可能的,但您必须覆盖 setContentView
并重新绑定所有视图和所有侦听器(或以其他方法执行此操作,该方法将在更改布局后调用)。
所以……像这样:
fun sth()
setContentView(R.layout.activity_main_second_layout)
rebindLayout(R.layout.activity_main_second_layout)
fun rebindLayout(@LayoutRes layoutId: Int)
when (layoutId)
R.layout.activity_main_first_layout -> /* rebind views here */
R.layout.activity_main_second_layout -> /* rebind views here */
另一个,我认为更好的是创建独立的片段并通过fragmentManager
更改片段。
其他方法 - ViewAnimator
, ViewSwitcher
.
【讨论】:
我是 Kotlin 和 android 编程的新手。感谢您向我指出片段,这就是我要尝试的。以上是关于单击按钮后如何切换到另一个 XML 布局?的主要内容,如果未能解决你的问题,请参考以下文章