令牌“else”上的语法错误

时间:2013-10-23 15:38:03

标签: java android eclipse

请帮助,我想只有选中复选框才能使按钮可见。但令牌“else”给了我一个语法错误。你觉得它可能是什么?有一段时间我觉得它可能是一些支架,但我真的不知道。

package com.example.holaamigos;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
    public final static String EXTRA_SALUDO = "com.example.holaamigos.SALUDO";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
    final Button btnHola = (Button)findViewById(R.id.BtnHola);
    final CheckBox checkbox1 =(CheckBox)findViewById(R.id.checkBox1);
        checkbox1.setOnCheckedChangeListener(new OnCheckedChangeListener(){

            @Override
            public void onCheckedChanged(CompoundButton arg0,
                    boolean checked) {
                if (checked)

                    Toast.makeText(checkbox1.getContext(), "Activo", Toast.LENGTH_LONG).show();
                    btnHola.setVisibility(0);
                    btnHola.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            Intent intent = new Intent(MainActivity.this, ActivitySaludo.class);
                            String saludo = txtNombre.getText().toString();
                            intent.putExtra(EXTRA_SALUDO, saludo);
                            startActivity(intent);

                else 

                    Toast.makeText(checkbox1.getContext(), "Inactivo", Toast.LENGTH_SHORT).show();
            }
            });
}



});

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

2 个答案:

答案 0 :(得分:4)

如果在if else语句中有多个指令,则应使用{},即:

if (checked){    
    //your code goes here
}
else {
    //One instruction so you can leaves braces but it's better to put them
    Toast.makeText(checkbox1.getContext(), "Inactivo", Toast.LENGTH_SHORT).show();
}

一个好的做法总是在{}中使用你的指示,即使你只有一个。

阅读this

  

此外,提供开启和关闭支架是可选的   “then”子句只包含一个语句

     

决定何时省略牙箍是个人品味的问题。   省略它们会使代码变得更脆弱。如果是第二个陈述   后来加入“then”条款,一个常见的错误就是遗忘   添加新需要的大括号。 编译器无法捕获此类   错误;你只会得到错误的结果

答案 1 :(得分:0)

将其更改为

        boolean checked) {
            if (checked)
                {
                Toast.makeText(checkbox1.getContext(), "Activo", Toast.LENGTH_LONG).show();
                btnHola.setVisibility(0);
                btnHola.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(MainActivity.this, ActivitySaludo.class);
                        String saludo = txtNombre.getText().toString();
                        intent.putExtra(EXTRA_SALUDO, saludo);
                        startActivity(intent);
                }
            else 
            {

                Toast.makeText(checkbox1.getContext(), "Inactivo" Toast.LENGTH_SHORT).show();
            }
        }