[英]Initialize Strings[] in onCreate method
我試圖根據來自上一個活動的值初始化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);
}
}
非常感謝你!!! 希望我們能找到解決方案!
更改
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;
}
}
采用
case 1:
models= new String[] { "Mike" , "Charls" , "Jhon"}
break;
case 2:
models= new String[]{"Paul" , "Louis" };
break;
原因
錯誤日志說明了一切。 聲明時,只能使用常量值初始化數組。
models={"Paul" , "Louis" }
不是初始化器
正如Juned所注意到的那樣。 如果您不使用break語句,則對於情況1,兩個語句都將完成。
使用此代替:
case 1:
models= new String[] { "Mike" , "Charls" , "Jhon"}
case 2:
models= new String[]{"Paul" , "Louis" };
Java希望您告訴它數組將保存什么類型。 這只是一種安全措施,因此您不能做類似{"A string", true}
事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.