【问题标题】:Sending String's Value to a Method将字符串的值发送给方法
【发布时间】:2015-11-24 20:14:57
【问题描述】:

我正在制作一个 Android 应用程序。我有一个ImageView,在我的代码的某些部分,我需要更改它的资源。我有一个字符串数组,它是

String[] names = {"chair","desk"};

我的可绘制文件夹中有 2 张图像,名称分别为“椅子”和“桌子”。当我使用

image.setImageResource(R.drawable.chair);

完美运行。但我需要将其用作:

image.setImageResource(R.drawable.names[0]);

但是 Java 不允许我这样做。我需要将字符串的值发送到该方法。有没有办法做到这一点?

【问题讨论】:

标签: java android imageview


【解决方案1】:

我会改成这样的

int[] names = {R.drawable.chair,R.drawable.desk};

然后就可以直接使用了

image.setImageResource(names[0]);

如果你想使用String,你可以使用getResources().getIdentifier() 来检索具有该名称的drawable id

【讨论】:

  • 但是 setImageResource 方法得到一个整数。当我尝试发送字符串值时显示错误
  • 这就是为什么我从 String[] 改为 int[]
  • R.drawable.chair/desk 变量实际上是生成的指向正确资源的整数 ID。将它们作为字符串没有多大意义。
【解决方案2】:

这样使用

String[] names = {"drawable/chair","drawable/desk"};

int imageResource = getResources().getIdentifier(names[0], null, getActivity().getPackageName());

image.setImageResource(imageResource);

其实很简单。

【讨论】:

  • 这不会考虑从相应的可绘制文件夹中选择基于屏幕分辨率的图像(下面有解释)
  • 和 R.drawable.chair 一样使用,但这是在 android 中使用资源的另一种方式。它的图像分辨率基于imageview。
  • 不,不是。当您将可绘制路径指定为“/drawable”时,系统仅查找“/drawable”文件夹,而当您从 R.drawable.xx 引用时,系统将从适当的文件夹中选择资源(它可以是 drawabl-hdpi 或 drawable-mdpi,具体取决于手机的屏幕分辨率)
  • 我试过这个但得到了 NullPointerException。我认为上下文为空,但我无法解决。
  • @berkc 输入代码 sn-p,我对其进行了测试,它的工作完美!
【解决方案3】:

使用 R.drawable.xx 可确保根据设备屏幕分辨率从正确的文件夹(本身 drawable/ 或 drawable-hdpi 或 drawable-mdpi)中选择正确的图像。因此使用 R.drawable.xx 是推荐的方法,因为反对 "getResources().getIdentifier(FixedPatch)"

由于 R.drawable.xx 是一个动态生成的对象,使用 switch case 并根据传入的 case 引用适当的可绘制对象将是最好的。此外,具有默认情况可确保如果在可绘制文件夹中未找到图像,仍会毫无问题地呈现 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多