复选框在android中无法正常工作

复选框在android中无法正常工作,android,button,checkbox,Android,Button,Checkbox,我在android上做了一个简单的checkbo[x演示程序,我放了一个chekbox和一个按钮。我想要的是,当按下chekbox和按钮时,toast显示“我接受”,否则当按钮按下toast时,toast生成为“我不接受”……我做了,但问题是当我取消选中chekbox时……它直接显示toast(不点击按钮) mainActivity.java package com.example.chechboxdemo; import android.os.Bundle; import android.a

我在android上做了一个简单的checkbo[x演示程序,我放了一个chekbox和一个按钮。我想要的是,当按下chekbox和按钮时,toast显示“我接受”,否则当按钮按下toast时,toast生成为“我不接受”……我做了,但问题是当我取消选中chekbox时……它直接显示toast(不点击按钮)

mainActivity.java

package com.example.chechboxdemo;

import android.os.Bundle;
import android.app.Activity;
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.Toast;

public class MainActivity extends Activity {
CheckBox c1;
Button b;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        c1=(CheckBox)findViewById(R.id.checkBox1);
        b=(Button)findViewById(R.id.button1);
        c1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
                // TODO Auto-generated method stub

                if(c1.isChecked()){

                    b.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View arg0) {
                            // TODO Auto-generated method stub
                            Toast.makeText(getApplicationContext(), "i accept", 1).show();
                        }
                    });
                }
                else{
                    Toast.makeText(getApplicationContext(), "i don't accept", 1).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.activity_main, menu);
        return true;
    }

}

除非您希望在用户选中/取消选中复选框时发生某些事情,否则不应使用checkChanged listener。因为您希望操作仅在单击按钮时发生,所以您只需要您的onClickListener,它应该位于onCheckChangedListener之外

试着这样做:

public class MainActivity extends Activity {
CheckBox c1;
Button b;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        c1=(CheckBox)findViewById(R.id.checkBox1);
        b=(Button)findViewById(R.id.button1);
        c1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
                // You don't need to use onCheckChangeListener.
            }
        });

        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(c1.isChecked()){
                    Toast.makeText(getApplicationContext(), "i accept", 1).show();
                }else{
                    Toast.makeText(getApplicationContext(), "i don't accept", 1).show();
                }
            }
        });
    }//end onCreate
}//end MainActivity
c1.isChecked()
移动到按钮内部,单击以检查按钮上是否选中复选框,然后根据复选框状态显示toast消息。将代码更改为:

b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(c1.isChecked()){  //<<< check here if checkbox clicked or not
                    Toast.makeText(getApplicationContext(), 
                                             "i accept", 1).show();
                }else{
                    Toast.makeText(getApplicationContext(), 
                                       "i don't accept", 1).show();
                }
            }
        });
b.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根

如果(c1.isChecked()){//您已经设置了
onClick
的按钮
b
onCheckedChanged
的复选框,请尝试将其放在外面,让我知道您想要实现的目标是什么X boss…!祝您有一个纽约的一天...)