【发布时间】:2019-01-23 09:25:54
【问题描述】:
假设我的HomeActivity 有两个布局 activity_home_1 和 activity_home_2。
我希望能够像以前在 Java 中那样在它们之间切换:
int layout = getResources().getIdentifier("activity_home_" + getHomeScreenNumber(),"layout",getPackageName());
setContentView(layout);
后来使用findViewById();引用我的布局元素
当然,这两个布局中的所有元素都命名相同,只是外观不同,所以这在 Java 中完美运行。
在 Kotlin 的另一边,我避免使用 findViewById(),我正在使用 Kotlin Android 扩展,并且包含这样的布局非常有用:
import kotlinx.android.synthetic.main.activity_home_1.*
问题是当我想在它们之间切换时。只是简单地为另一个布局添加另一个导入它会导致错误,因为它不知道要查看哪个布局(因为它们都有相同的字段)。
使用 Kotlin Android 扩展时如何在两种布局之间切换?
【问题讨论】:
-
在这种情况下您应该考虑使用片段。无论如何,您将无法在 Activity 中实现这一点。如果所有视图的类型都相同,您甚至不需要。合成属性不会验证您的布局。您还必须考虑使用合成属性缓存视图。所以你必须禁用缓存或确保缓存被清除。
标签: android android-layout kotlin kotlin-android-extensions