有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

令牌“{”上的java语法错误,应在该令牌之后切换标签

当我从微调器类中选择选项时,我想打开新表单

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

Syntax error on token "{", SwitchLabels expected after this token

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,安卓.R.layout.simple_spinner_item);
    adapter2.setDropDownViewResource(
        安卓.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) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    朋友,你不能在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;
             }
         }
    

    相反,您必须超越微调器声明:

    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 spinner2 = new Spinner(); 
    
  3. # 3 楼答案

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

    也就是说,什么是^{

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

    您还声明了Spinner spinner2;(正如奥利指出的,声明的位置不对),但它没有设置为任何值,因此即使您可以执行它,您的spinner2.setSelection(x)也会抛出NullPointerException