0

请帮忙,我想让按钮只有在选中复选框时才可见。但是标记“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;
}

}
4

2 回答 2

4

当您在 if else 语句中有多个指令时,您应该使用{}ie :

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();
}

{}一个好的做法是,即使你只有一个,也总是把你的指示写进去。

这个

另外,左大括号和右大括号是可选的,前提是“then”子句只包含一个语句

决定何时省略牙套是个人喜好问题。省略它们会使代码更脆弱。如果稍后将第二条语句添加到“then”子句中,一个常见的错误将是忘记添加新需要的大括号。编译器无法捕捉到这种错误;你只会得到错误的结果

于 2013-10-23T15:39:20.527 回答
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();
            }
        }
于 2013-10-23T15:40:30.920 回答