如果没有选中任何复选框,请不要继续

时间:2016-12-09 18:10:30

标签: android

我有5个复选框和一个按钮。单击按钮,将打开另一个活动。我的愿望是,除非选中至少一个复选框,否则按钮不起作用。我怎么做?在Android Studio上工作。谢谢!

来自MainActivity.java的

代码:

package todo.starter.com.decision;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;

import static todo.starter.com.decision.R.id.option1;
import static todo.starter.com.decision.R.id.option2;
import static todo.starter.com.decision.R.id.option3;
import static todo.starter.com.decision.R.id.option4;
import static todo.starter.com.decision.R.id.option5;

public class MainActivity extends AppCompatActivity {
    private CheckBox checkbox1, checkbox2, checkbox3, checkbox4, checkbox5;
    private static Button but_next;



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

        }




    public void OnClickButtonListener() {
        but_next = (Button)findViewById(R.id.button);
        but_next.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                       });
      }
        public void addListenerToCeckBox() {
        checkbox1 = (CheckBox)findViewById(option1);
        checkbox1.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (((CheckBox)v).isChecked()){
                            Toast.makeText(MainActivity.this,
                                    "option1 checked", Toast.LENGTH_LONG).show();
                        }
                    }
                }
        );
        checkbox2 = (CheckBox)findViewById(option2);
        checkbox2.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (((CheckBox)v).isChecked()){
                            Toast.makeText(MainActivity.this,
                                    "option2 checked", Toast.LENGTH_LONG).show();
                        }
                    }
                }
        );
        checkbox3 = (CheckBox)findViewById(option3);
        checkbox3.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (((CheckBox)v).isChecked()){
                            Toast.makeText(MainActivity.this,
                                    "option3 checked", Toast.LENGTH_LONG).show();
                        }
                    }
                }
        );
        checkbox4 = (CheckBox)findViewById(option4);
        checkbox4.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (((CheckBox)v).isChecked()){
                            Toast.makeText(MainActivity.this,
                                    "option4 checked", Toast.LENGTH_LONG).show();
                        }
                    }
                }
        );
        checkbox5 = (CheckBox)findViewById(option5);
        checkbox5.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (((CheckBox)v).isChecked()){
                            Toast.makeText(MainActivity.this,
                                    "option5 checked", Toast.LENGTH_LONG).show();
                        }
                    }
                }
        );

    }



}

3 个答案:

答案 0 :(得分:1)

将您的onClickButtonListner更改为以下代码

public void OnClickButtonListener() {
    but_next = (Button)findViewById(R.id.button);
    but_next.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(validate()){
                    Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                    startActivity(intent)
                    }else{
                      //Show whatever the error Message here.
                     }
                   });
  }

public boolean validate(){
 return checkbox1.isChecked() || checkbox2.isChecked() || checkbox3.isChecked() || checkbox4.isChecked() || checkbox5.isChecked();
}

答案 1 :(得分:1)

public void OnClickButtonListener() {
    but_next = (Button)findViewById(R.id.button);
    but_next.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(option1.isCheked || option2.isChecked || option3.isChecked || option4.isChecked || option5.isChekced) {
                        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                    } else {
                        Toast.makeText(getApplicationContext(), "You must select atleast 1 option.", Toast.LENGTH_SHORT).show();
                    }

                });
            }

如果选择了任何选项,则只能导航到下一个活动。

答案 2 :(得分:0)

除了Nishanth的回答,您还可以制作一个数组并循环播放它。首先,使用checkBoxes创建一个全局数组:

private CheckBox[] checkBoxes = {checkBox1,checkBox2,checkBox3,checkBox4,checkBox5};

然后创建一个可以每次调用的方法(但要确保复选框已初始化):

private boolean anyOneChecked(){

  boolean anyChecked = false;

   for(int i=0;i<checkBoxes.length;i++){
     if(checkBoxes[i]!=null&&checkBoxes[i].isChecked()){
     anyChecked = true;
     break; //stop the loop if one is checked
      }
    }

   return anyChecked;
}

因此,您可以随时在活动中的任何地方拨打电话,例如:

if(anyOneChecked){
//do your stuff
}

优势在于,如果您需要在活动中多次查看此内容,则只需调用此方法,无需在需要检查的任何位置再次编写内容。