【问题标题】:How to switch to another XML layout after click on button?单击按钮后如何切换到另一个 XML 布局?
【发布时间】: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,布局真的变成了第二个。 但是程序的功能不再起作用,逻辑消失了。看来我需要以某种方式恢复程序的运行以使代码再次运行而不会中断,包括变量丢失。

【问题讨论】:

  • 还有另一种方法,使用片段

标签: kotlin setcontentview


【解决方案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 编程的新手。感谢您向我指出片段,这就是我要尝试的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多