将字符串的值发送给方法
问题描述:
我在制作Android应用程序。我有一个ImageView
和我的代码的一部分,我需要更改其资源。我有一个String数组,这是将字符串的值发送给方法
String[] names = {"chair","desk"};
我在绘制的文件夹,其名称是“椅子”和“书桌” 2个图像。当我使用
image.setImageResource(R.drawable.chair);
它完美的作品。但我需要用它作为:
image.setImageResource(R.drawable.names[0]);
但Java不允许我这样做。我需要将字符串的值发送到该方法。有没有办法做到这一点?
答
我会改变它像
int[] names = {R.drawable.chair,R.drawable.desk};
,然后你可以,如果你想使用一个String
可以使用getResources().getIdentifier()
以检索绘制的ID与名称
image.setImageResource(names[0]);
答
像这样使用
String[] names = {"drawable/chair","drawable/desk"};
int imageResource = getResources().getIdentifier(names[0], null, getActivity().getPackageName());
image.setImageResource(imageResource);
它很简单。
答
使用R.drawable.xx确保根据设备屏幕分辨率从正确的文件夹(本身drawable /或drawable-hdpi或drawable-mdpi)中选取正确的图像。因此,使用R.drawable.xx是推荐的方法作为针对“getResources()。则getIdentifier(FixedPatch)”
由于R.drawable.xx是动态生成的对象,使用开关壳体和引用适当的绘制对象基于即将到来的案例将工作最好。另外,有一个默认情况下可以确保如果在可绘制文件夹中找不到图像,ImageView仍然呈现,没有任何问题。
例如,
Switch (Case)
Case "myString" : ImageView.setImageResource(R.id.myString);//here R.id.myString is hardcoded object reference
Case "myString2" : ImageView.setImageResource(R.id.myString);
default : ImageView.setImageResource(R.id.myDefaultImage);
http://stackoverflow.com/questions/6783327/setimageresource-from-a-string –