在onCreate方法中初始化Strings []

时间:2013-05-23 16:03:16

标签: java android

我正在尝试初始化一个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);
}

}

非常感谢你!我希望我们能找到解决方案!

3 个答案:

答案 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}

之类的操作