我正在使用此行来检查我的应用程序中的许多视图,并获取与它们相关联的值(作为用户的输入)。每隔一个视图(奇数)是一个文本视图,用作以下视图的标题。这些是在运行时动态创建的,因此我将ID收集到arrayList中,以在以下循环中使用:
for(id in data.orEmpty()) {
val mView = findViewById<View>(id)
if (mView is TextView) {
Log.d("BEAU - ","WOOT! ID number $id TextView - ${mView.text}")
}
if (mView is EditText) {
Log.d("BEAU - ","WOOT! ID number $id EditText - ${mView.text}")
}
if (mView is RatingBar) {
Log.d("BEAU - ","WOOT! ID number $id RatingBar - ${mView.numStars}")
}
}
我遇到的问题是每个EditText都被算作TextView和EditText。所以我会有这样的东西:
D / BEAU-:哇! ID号1 TextView-常规EditText
D / BEAU-:哇! ID号2 TextView-Hello World
D / BEAU-:哇! ID号2 EditText-Hello World
但是,其他所有功能(例如评级栏)都可以正常运行。因此,问题是,为什么EditText通过文本视图的类型检查?并且我可以做一些事情来仅检查文本视图而不检查文本视图并在第一个if语句中编辑文本吗?
编辑:
暂时,我已经能够在检查TextViews时对照EditTexts进行检查。我这样做是这样的:
if (mView is TextView && mView !is EditText) {}
但是,这样做有权利吗?如果是这样,为什么我必须这样做呢?