单击按钮后如何切换到另一个 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 布局?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以通过单击按钮打开一个新的布局(.xml)文件?

在没有闪光灯的活动之间切换

单击按钮时如何将文本视图从一件事切换到另一件事 - Android

单击按钮后使用 Selenium 切换到新窗口

使用按钮单击将一个活动链接到另一个活动

使用 CardLayout 单击按钮在 jpanels 之间切换 [重复]