我一直在寻找一段时间,无法找到解决我问题的方法。我正在尝试根据用户登录设置imageView。主要问题是如何将R.drawable.stock
重命名为R.drawable.user1
,其中imageView的名称随用户名称而变化。我尝试将其设置为String temp="R.drawable."+userNameStore;
之类的字符串,但没有运气。
这就是我在做的事情:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.profile);
SharedPreferences app_preferences =
PreferenceManager.getDefaultSharedPreferences(this);
String userNameStore =
app_preferences.getString("userNameStore", null);
String temp="R.drawable."+userNameStore;
TextView textName=(TextView) findViewById(R.id.username);
textName.setText("Username: "+ userNameStore);
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageResource(temp);
}
答案 0 :(得分:0)
您可以使用getIdentier,例如:
getResources().getIdentifier("star_off", "string", getPackageName());
查看文档here
在你的情况下它应该是这样的:
int resID = getResources().getIdentifier(temp, "drawable", getPackageName());
...
image.setImageResource(resID);
答案 1 :(得分:0)
您可以像这样构建字符串标识符......
int id = getResources()。getIdentifier(“name_of_resource”,“id”,getPackageName());
涵盖here
答案 2 :(得分:0)
我在我的实用程序类中使用了2个方法:
public static int getImageId(Context context, String imageName) {
return context.getResources().getIdentifier("drawable/" + imageName, null, context.getPackageName());
}
public static int getRawResourceId(Context context, String rawName) {
return context.getResources().getIdentifier("raw/" + rawName, null, context.getPackageName());
}
因此,如果您的可绘制文件夹中有一个名为user1
的图像资源,您可以像这样使用其ID:
imageView.setImageResource(getImageId(this, "user1"));