2016-10-18 564 views
1

我想通过一个变量(item是变量名称,我将设置为lowerCase)在我的ImageView中设置图像。 但是,它不工作和渣油将返回0在Android Studio中使用setImageResource设置图像使用变量

这里是我的代码:

ImageView iv = (ImageView)v.findViewById(R.id.imgView); 

    if (item != null) { 
     Log.i("item: ", item.toLowerCase()); 

     int resID = getResources().getIdentifier(item.toLowerCase(), "drawable", "package.name"); 

     Log.i("resid: ", String.valueOf(resID)); //will return 0 - im guessing this is where the problem is 

     iv.setImageResource(resID); 
    } 

我用这个作为指导Android, reference things in R.drawable. using variables?但没有其他解决方案的工作对我来说,其实他们都给了我相同的结果(返回0)。 如果需要,我可以提供更多的代码(只是不希望它是夸张的)。 在此先感谢!

+2

'“package.name”'是错误的。使用'getPackageName()'。 [Here](http://stackoverflow.com/questions/22449692/set-background-drawable-resource-from-string)示例 – Blackbelt

+0

@Blackbelt确实啊..谢谢! – Axelle

回答

1

getIdentifier()如果未找到此类资源,则返回0。 (0不是有效的资源ID。)

而且你应该getPackageName()方法context对象始终返回正确的包名称。

如果你会显示你的文件夹结构和文件名,我可以帮你修复它。

顺便说一句,如果你可以从资源直接将绘制你可以只使用R.drawable.resName

+0

它的作品T_T我很生气,因为没有搞清楚。非常感谢! 是的,我知道资源,但不幸的是它不是这个应用程序的选项:) – Axelle