令牌“{”上的语法错误,此令牌后预期的SwitchLabels

时间:2011-04-08 21:39:46

标签: java switch-statement syntax-error

我想在从微调器类

中选择选项时打开新表单

我试试这个,但我有语法错误

  

令牌“{”上的语法错误,   SwitchLabels预计在此之后   令牌

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tf);
    Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
    ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
        this, R.array.tfoptions,android.R.layout.simple_spinner_item);
    adapter2.setDropDownViewResource(
        android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(adapter2);

    spinner2.setOnItemSelectedListener(new MyOnItemSelectedListener());

    public class MyOnItemSelectedListener implements OnItemSelectedListener {

        public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
            switch (view.isClickable()) {       <---------------- syntax error 
                Spinner spinner2;
            case spinner2.setSelection(0):
                startActivity(new Intent(this,To.class));
                break;
            case spinner2.setSelection(1):
                startActivity(new Intent(this,out.class));
            default:
                break;
            }
        }
        public void onNothingSelected(AdapterView parent) {
            // Do nothing.
        }
    }
}

3 个答案:

答案 0 :(得分:4)

您尝试在第一个case块之前声明变量。你不能做这个。将变量声明移到switch

之上

答案 1 :(得分:1)

我假设view.isClickable()返回一个布尔值,在这种情况下你应该使用if而不是switch

那说什么是case spinner2.setSelection(0): ??

案例标签不能调用代码,也不能是动态的。 case标签应该是常量,可以是整数或枚举值。

你也宣布Spinner spinner2;(并且在Oli指出的情况下将其声明放在错误的位置)但它没有设置为任何东西,所以你的spinner2.setSelection(x)会抛出NullPointerException,即使你可以得到这个执行。

答案 2 :(得分:1)

我的朋友你不能在switch语句中声明一个变量:

View view, int pos, long id) {
     switch (view.isClickable()) {       
         Spinner spinner2;   <---------------- here is your syntax error 
         case spinner2.setSelection(0):
         startActivity(new Intent(this,To.class));
         break;
         case spinner2.setSelection(1):
         startActivity(new Intent(this,out.class));
         default:
         break;
         }
     }

相反,你必须超越你的Spinner声明:

View view, int pos, long id) {
     Spinner spinner2;  // <---------------- now it's ok
     switch (view.isClickable()) {       

         case spinner2.setSelection(0):
         startActivity(new Intent(this,To.class));
         break;
         case spinner2.setSelection(1):
         startActivity(new Intent(this,out.class));
         default:
         break;
         }
     }
顺便说一句,在您的代码中,您没有初始化您的Spinner ......,您也应该这样做:

Spinner spinner2 = new Spinner();