从字符串中获取android的id资源

Posted

技术标签:

【中文标题】从字符串中获取android的id资源【英文标题】:Get android's id resource from a string 【发布时间】:2018-03-23 23:17:31 【问题描述】:

在我的 Kotlin 应用程序中,我有一些 ImageViews(在 activity_main.xml 中):imageView_0imageView_1imageView_2imageView_3

如何在从 0 到 3 的循环中访问视图?这行不通:

val imageView: ImageView = findViewById<ImageView>("R.id.imageView_" + index) as ImageView

【问题讨论】:

【参考方案1】:
for(i in 1..3)
  val id: int=getResources().getIdentifier("imageview_"+i, "id", 
  getPackageName())
  imageview[i]=findViewById(id) as ImageView

如果你在xmlimageview_1imageview_2imageview_3

【讨论】:

【参考方案2】:

另一个选项允许使用不可为空的ImageViews 声明您的数组:

val imageViews : Array<ImageView> = Array(4, 
    val id: Int = resources.getIdentifier("imageView_" + it, "id", packageName)
    findViewById<ImageView>(id)
)

【讨论】:

【参考方案3】:

我最终这样做了:

var imageViews: Array<ImageView?> = arrayOfNulls(4)

for (i in 0..3) 
    val id: Int = getResources().getIdentifier("imageView_" + i, "id", getPackageName())
    imageViews.set(i, findViewById<ImageView>(id) as ImageView)

【讨论】:

以上是关于从字符串中获取android的id资源的主要内容,如果未能解决你的问题,请参考以下文章

android - 从库中获取资源ID

Android 用字符串资源名称获取int型资源id的几种方式

Android:android.content.res.Resources$NotFoundException:字符串资源 ID #0x5

android.content.res.Resources$NotFoundException: Main 中的字符串资源 ID 致命异常

如何从 android 包中的资源 id 获取 Drawable 对象?

Android:如何在build.gradle中获取资源字符串以支持多种语言的多种口味?