是否可以通过 Kotlin Android 扩展以编程方式包含特定布局?
Is it possible to programmatically include specific layout with Kotlin Android Extension?
假设我的 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 Extensions,它与包括像这样的一种布局:
import kotlinx.android.synthetic.main.activity_home_1.*
问题是我想在它们之间切换。只是简单地为另一个布局添加另一个导入会导致错误,因为它不知道要查看哪个布局(因为它们都有相同的字段)。
如何在使用 Kotlin Android Extensions 时在两种布局之间切换?
答案很简单,我没有给予足够的重视。
它包括所需的布局:
setContentView(..)
例如,如果您包含
import kotlinx.android.synthetic.main.activity_home_1.*
并在您的 OnCreate()
中设置
setContentView(R.layout.activity_home_3)
现在,您的 activity_home_3 布局将被显示,并且它们的元素将被引用!
不需要findViewById()
假设我的 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 Extensions,它与包括像这样的一种布局:
import kotlinx.android.synthetic.main.activity_home_1.*
问题是我想在它们之间切换。只是简单地为另一个布局添加另一个导入会导致错误,因为它不知道要查看哪个布局(因为它们都有相同的字段)。
如何在使用 Kotlin Android Extensions 时在两种布局之间切换?
答案很简单,我没有给予足够的重视。 它包括所需的布局:
setContentView(..)
例如,如果您包含
import kotlinx.android.synthetic.main.activity_home_1.*
并在您的 OnCreate()
中设置
setContentView(R.layout.activity_home_3)
现在,您的 activity_home_3 布局将被显示,并且它们的元素将被引用!
不需要findViewById()