2013-11-01 131 views
-1

这是一个如何在Android的Java问题 - 日食 我有一个String [R 备案,我defind他那个样子:字符串值的变量

String r="pic"+c1; 

我想利用它的价值,它是“pic6”并将其用作变量名称。

我该怎么做?

+2

如果c1是6串接有什么问题? –

+6

Java中不支持动态变量。 –

回答

2

你不能直接做,但你可以使用HashMap来模拟你所寻找的。

实施例:

String r="pic"+c1; 
HashMap<String,Integer> extendedVars=new HashMap<>(); 
extendedVars.put(r,10); 
+1

对不起,我不知道HashMap是什么... 我有这样的代码: 'String r =“pic”+ c1; pic6.setImageDrawable(getResources()getDrawable( \t \t \t \t \t \t R.drawable.orange));' 我想提出用r图像pic6的。 –

+1

@AlonLousky映射将键映射到值,因此您可以使用它来模拟动态变量声明(比如稍后编写一个解释器)。你可以说HashMap varMap = new HashMap <>(); varMap.put(“pic6”,new ...);然后再调用varMap.get(“pic”+ c1).setImageDrawable(.....) – Lan

+1

@AlonLousky考虑到这是一个Android问题(没有注意到,在我的原始答案),你可能想看看http ://stackoverflow.com/questions/10137692/how-to-get-resource-name-from-resource-id&http://stackoverflow.com/questions/3476430/how-to-get-a-resource-id -with-a-known-ressource-name/3476470#3476470 – Lan

2

像主机。 Fouad说。 Java中不支持动态变量。
同样的问题可以发现Here

1

在java中,必须知道变量名在编译时。没有办法做你想做的事情。

5

如果要从Android应用程序的可绘制文件夹中选择名为“pic6.png”的图像,可以尝试以下代码。

String r = "pic" + c1; 

int resId = getResources().getIdentifier(r, "drawable", getPackageName()); 
if (resId != 0) { 
    imageView.setImageResource(resId); 
} else { 
    // This is used in case no image resource is found 
    imageView.setImageResource(R.drawable.unknown); 
} 

请参阅:如果您使用的其他部分,那么你就需要“unknown.png”图像添加到Android项目的绘制文件夹。

希望这会有所帮助。