0

我有这个,它工作正常:

public static Integer[] photos = new Integer[]    
{R.drawable.photo1,R.drawable.photo2,R.drawable.photo3};

this.setImageResource(photos[mCellNumber]);

但我决定将文件名放在一个 XML 文件中,我这样做了,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<array name="Red">
    <item>R.drawable.photo1</item>
    <item>R.drawable.photo2</item>
    <item>R.drawable.photo3</item>
</array>
</resources>

并尝试了这样的东西:

String[] month = getResources().getStringArray(R.array.Red);
this.setImageResource(month[mCellNumber]);

..和..

String[] month = getResources().getStringArray(R.array.Red);
int bla = Integer.parseInt(month[mCellNumber]);
this.setImageResource(bla);

我理解为什么它不起作用(字符串/整数),但我还没有找到任何简单的方法来处理字符串到整数的转换部分,或者使用带有字符串作为参数的 setImageResource。有什么建议么?

4

1 回答 1

1
String[] month = getResources().getStringArray(R.array.Red);
int bla = Integer.parseInt(month[mCellNumber]);

看起来它会抛出异常 R.drawable.photo1 因为字符串不是有效数字。

您尝试只保存名称,如 photo1、photo2、photo3,然后执行以下操作:

...

Android - 将可绘制 ID 存储在自定义 XML 文件中

你可以尝试只保存像“joe_pic”这样的名字,这样就可以

..

   String uri = "drawable/icon";

    // int imageResource = R.drawable.icon;
    int imageResource = getResources().getIdentifier(uri, null, getPackageName());

    ImageView imageView = (ImageView) findViewById(R.id.myImageView);
    Drawable image = getResources().getDrawable(imageResource);
    imageView.setImageDrawable(image);
}

but if you have already added "R.drawable.joe_pic" complete can use String.split to get 3 rd string part

于 2012-06-26T17:40:59.427 回答