是否可以通过编程方式在Kotlin Android扩展程序中包含特定的布局?

时间:2019-01-23 09:25:55

标签: android android-layout kotlin kotlin-android-extensions

假设我的activity_home_1有两种布局 activity_home_2 HomeActivity 。 我希望能够像以前使用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扩展时如何在两种布局之间切换?

1 个答案:

答案 0 :(得分:1)

答案很简单,我没有给予足够的重视。 它将包含所需的布局:

setContentView(..)

例如,如果您包含

  • import kotlinx.android.synthetic.main.activity_home_1.*

,然后在您的OnCreate()中设置

  • setContentView(R.layout.activity_home_3)

现在,将显示您的 activity_home_3 布局,并将引用其元素!

无需findViewById()