我希望用户选择一个壁纸,我将其设置为Android壁纸。 我目前正在使用这一行:
myWallpaperManager.setResource(R.drawable.a1);
问题是它不是动态的,我想根据我得到的数字将所选图像更改为R.drawable.a2
,R.drawable.a3
,R.drawable.a4
等。
所以如果我有int chosenPicNum = 3我想创建字符串“R.drawable.a
”+ 3然后调用myWallpaperManager.setResource(R.drawable.a3);
但我不能这样做。错误是eclipse将其读作字符串而不是资源。 目前这里是我最接近的地方:
String imageResource="R.drawable.a"+chosenPicNum) ;
因此,在这种情况下,imageResource是字符串类型“R.drawable.a3
”但我希望它是R.drawable.a3。
感谢您的帮助!!
Dvir,雄心勃勃的20岁:)
答案 0 :(得分:2)
像这样使用getIdentifier():
public final static String PACKAGE = "..."; // insert your package name
private int getDrawable(String name) {
return getId(name, "drawable");
}
private int getId(String name, String type) {
return getResources().getIdentifier(name, type, PACKAGE);
}
使用以下方法访问该方法:
myWallpaperManager.setResource(getDrawable("a" + chosenPicNum));
答案 1 :(得分:0)
当您使用资源时,您已经知道它们的编号和名称。所以使用数组:
int[] ids = new int[] {R.drawable.a1, R.drawable.a2, R.drawable.a3, };
当你有你选择的NumPic(假设它基于0)时:
if (chosenNumPic >= 0 && chosenNumPic < ids.length) {
myWallpaperManager.setResource(ids[chosenNumPic]);
}
希望有所帮助:)
答案 2 :(得分:0)
试试这个
int resId = getResources().getIdentifier("your_drawable_name"), "drawable", getActivity().getPackageName());
imageview.setBackgroundResource(resId);