我正在尝试初始化一个String []数组,具体取决于前一个活动的值。编译器说下面的代码中有一个错误,它说“数组常量只能在初始化程序中使用”。没有办法做我想做的事情吗?
public class ZeroParameter extends Activity{
int option, model;
String[] models;
protected void onCreate(Bundle savedInstanceState)
{
Bundle b = getIntent().getExtras();
option = b.getInt("option");
switch(option)
{
case 1:
models={ "Mike" , "Charls" , "Jhon"}
case 2:
models={"Paul" , "Louis" };
}
super.onCreate(savedInstanceState);
setContentView(R.layout.zero_parameter);
final Spinner spinModel=(Spinner)findViewById(R.id.spinnerModel0);
spinModel.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> arg0, View v, int position,long id)
{
model = spinModel.getSelectedItemPosition();
}
public void onNothingSelected(AdapterView<?> arg0)
{
}
});
ArrayAdapter<String> aa= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,models);
aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinModel.setAdapter(aa);
}
}
非常感谢你!我希望我们能找到解决方案!
答案 0 :(得分:3)
更改
switch(option)
{
case 1:
models={ "Mike" , "Charls" , "Jhon"};
case 2:
models={"Paul" , "Louis" };
}
到
switch(option)
{
case 1: {
models=new String[]{ "Mike" , "Charls" , "Jhon"};
break;
}
case 2: {
models=new String[]{"Paul" , "Louis" };
break;
}
}
答案 1 :(得分:2)
使用
case 1:
models= new String[] { "Mike" , "Charls" , "Jhon"}
break;
case 2:
models= new String[]{"Paul" , "Louis" };
break;
<强>原因强>
错误日志说明了一切。您只能在声明时使用常量值初始化数组。
models={"Paul" , "Louis" }
不是初始化程序
Juned注意到的另一件事。如果你不使用break语句,那么对于case 1,两个语句都将完成。
答案 2 :(得分:0)
请改用:
case 1:
models= new String[] { "Mike" , "Charls" , "Jhon"}
case 2:
models= new String[]{"Paul" , "Louis" };
Java希望你告诉它数组将保持什么类型。这只是一项安全措施,因此您无法执行{"A string", true}
。