在android中从名称而不是id获取资源
Posted
技术标签:
【中文标题】在android中从名称而不是id获取资源【英文标题】:Getting resource from name instead of id in android 【发布时间】:2011-10-28 03:40:14 【问题描述】:我有以下代码用于使用名称而不是 id 获取资源:
spec = new ImageView[56];
for (i=2; i<=56; i++)
String s = null;
s = "items_r"+Integer.toString(i)+"_c1";
spec[i] = (ImageView) findViewById(getResources().getIdentifier(s,"drawable",getPackageName()));
Log.e(tag, Boolean.toString(spec[i] == null));
我的可绘制文件夹中有 56 个项目,名为 items_r1_c1 到 items_r56_c1; 但我将 spec[i] 设为空。 有人可以指出我的错误以及如何纠正它吗? 谢谢。
【问题讨论】:
【参考方案1】:试试这个
int id = findViewById(getResources().getIdentifier(s,"drawable",getPackageName());
spec[i] = (new ImageView()).setImageResource(id);
【讨论】:
【参考方案2】:findViewById(int)
用于查找已膨胀且当前存在于您的 Activity 内容视图下的 View
s。
您需要使用Resources.getDrawable(int)
或ImageView.setImageResource(int)
。
spec = new ImageView[56];
for (i=2; i<=56; i++)
String res = "items_r" + Integer.toString(i) + "_c1";
int resId = getResources().getIdentifier(res, "drawable", getPackageName());
spec[i] = new ImageView();
// Drawable image = getResources.getDrawable(resId);
// spec[i].setImageDrawable(image);
spec[i].setImageResource(resId);
Log.e(tag, Boolean.toString(spec[i] == null));
【讨论】:
以上是关于在android中从名称而不是id获取资源的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 中从 Firebase 获取当前用户 ID
Android 用字符串资源名称获取int型资源id的几种方式
java 从资源字体获取颜色:https://stackoverflow.com/questions/31590714/getcolorint-id-deprecated-on-android-6-0