在我的代码中我需要使用switch语句初始化数组但是当我尝试它时显示错误就像......“数组常量只能在初始化器中使用”...如何解决这个问题..
public class Arrayclass {
String[] mStrings;
void setfor()
{
int i = 0;
switch(i)
{
case 0: mStrings = {
"https://dl.dropboxusercontent.com/s/f308a9s5ycuc3mh/1.jpg",
"https://dl.dropboxusercontent.com/s/cmc7qe74ckr5z2u/24.jpg",
"https://dl.dropboxusercontent.com/s/4h353n2virybjql/25.jpg",
"https://dl.dropboxusercontent.com/s/t9gta0rpaze7j4f/26.jpg",
"https://dl.dropboxusercontent.com/s/b9sv9nki52e7zvg/27.jpg",
"https://dl.dropboxusercontent.com/s/gyg7kvnlnv753lf/37.jpg" };
break;
case 1: mStrings = {
"https://dl.dropboxusercontent.com/s/f308a9s5ycuc3mh/1.jpg",
"https://dl.dropboxusercontent.com/s/cmc7qe74ckr5z2u/24.jpg",
"https://dl.dropboxusercontent.com/s/4h353n2virybjql/25.jpg",
"https://dl.dropboxusercontent.com/s/t9gta0rpaze7j4f/26.jpg",
"https://dl.dropboxusercontent.com/s/b9sv9nki52e7zvg/27.jpg",
"https://dl.dropboxusercontent.com/s/gyg7kvnlnv753lf/37.jpg" };
break;
}
}
答案 0 :(得分:3)
远离声明,您必须在阵列初始值设定项上使用new String[]
:
case 0: mStrings = new String[] {
"https://dl.dropboxusercontent.com/s/f308a9s5ycuc3mh/1.jpg",
"https://dl.dropboxusercontent.com/s/cmc7qe74ckr5z2u/24.jpg",
"https://dl.dropboxusercontent.com/s/4h353n2virybjql/25.jpg",
"https://dl.dropboxusercontent.com/s/t9gta0rpaze7j4f/26.jpg",
"https://dl.dropboxusercontent.com/s/b9sv9nki52e7zvg/27.jpg",
"https://dl.dropboxusercontent.com/s/gyg7kvnlnv753lf/37.jpg" };
可以在声明(第8.3节,第9.3节,第14.4节)中指定数组初始值设定项,或者作为数组创建表达式(第15.10节)的一部分,以创建数组并提供一些初始值。
“数组创建表达式”是指JLS, Section 15.10,它使您使用new Type[]
添加数组初始值设定项。
ArrayCreationExpression:
新的PrimitiveType DimExprs Dimsopt
new ClassOrInterfaceType DimExprs Dimsopt
新的PrimitiveType Dims ArrayInitializer
new ClassOrInterfaceType Dims ArrayInitializer
答案 1 :(得分:1)
您使用的语法仅在声明数组变量时使用才有效。
尝试:
case 0: mStrings = new String[] {
...
答案 2 :(得分:1)
这是何时使用android提供的String资源的完美示例。
http://developer.android.com/guide/topics/resources/string-resource.html
我会打开你的strings.xml文件,并将每个选项定义为字符串数组:
<resources>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
</string-array>
</resources>
然后全局声明你的字符串[]:
String[] vals;
然后在你的开关中执行以下操作:
Resources res = getResources();
vals = res.getStringArray(R.array.planets_array);