复选框和if-else语句

时间:2016-04-20 17:58:09

标签: java if-statement checkbox

这是我在Android Studio中制作的小应用的来源。当我调用这个函数时,它假设将dog,cat和parrot相互比较,然后将int dogCounter增加为5.当我运行该函数时,它不会更新分数。

dogCounter= 0;
catCounter = 0;

//check boxes
cutestCheckBoxDog = (CheckBox)findViewById(R.id.CheckboxCutestDog);
cutestCheckBoxCat = (CheckBox)findViewById(R.id.CheckboxCutestCat);
cutestCheckBoxParrot =(CheckBox)findViewById(R.id.CheckboxCutestParrot);

//call methods
processCutest(cutestCheckBoxDog, cutestCheckBoxCat, cutestCheckBoxParrot);

showResultButton= (Button)findViewById(R.id.showResults);
showResultButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {

          Toast.makeText(getApplicationContext(),catCounter +  " " + dogCounter, Toast.LENGTH_LONG).show();

public void processCutest(CheckBox dog, CheckBox cat, CheckBox parrot){


    if (dog.isChecked() && !cat.isChecked() && !parrot.isChecked()){
        dogCounter += 5;
    }else if (cat.isChecked() && !dog.isChecked() && !parrot.isChecked()){
        catCounter += 5;
    } else{
        //nobody gets points
    }
}

编辑:抱歉组织不好。还是很新的,关于它的指针也会很好。

package dogorcatperson.ivellapplication.com.dogorcatperson;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private RadioGroup canineRadioGroup;
private RadioButton canineRadioButton;
private SeekBar seekBar;
private TextView seekBarTextView;
private CheckBox cutestCheckBoxDog;
private CheckBox cutestCheckBoxCat;
private CheckBox cutestCheckBoxParrot;
private RadioGroup droolRadioGroup;
private RadioButton droolRadioButton;
private Button showResultButton;
private int dogCounter;
private int catCounter;

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

    //call setup()
    setUp();

    //seekbar

    seekBar = (SeekBar) findViewById(R.id.seekBarFeline);
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            seekBarTextView.setText("comfortableness: " + progress + "/" + seekBar.getMax());
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });

}

public void setUp(){

    dogCounter= 0;
    catCounter = 0;

    canineRadioGroup =(RadioGroup)findViewById(R.id.radioGroupCanine);
    droolRadioGroup = (RadioGroup)findViewById(R.id.RadioGroupDrool);
    seekBarTextView = (TextView)findViewById(R.id.seekBarProgressTextView);

    //check boxes
    cutestCheckBoxDog = (CheckBox)findViewById(R.id.CheckboxCutestDog);
    cutestCheckBoxCat = (CheckBox)findViewById(R.id.CheckboxCutestCat);
    cutestCheckBoxParrot = (CheckBox)findViewById(R.id.CheckboxCutestParrot);

    //call methods
    processCutest(cutestCheckBoxDog, cutestCheckBoxCat, cutestCheckBoxParrot);
    processDrool(droolRadioGroup);
    processCanine(canineRadioGroup);

    showResultButton= (Button)findViewById(R.id.showResults);
    showResultButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Toast.makeText(getApplicationContext(),catCounter +  " " + dogCounter, Toast.LENGTH_LONG).show();

//                Intent i = new Intent(MainActivity.this, ResultActivity.class);
//                i.putExtra("catCounter", catCounter);
//                i.putExtra("dogCounter", dogCounter);
//                startActivity(i);
        }
    });
}

public void processCutest(CheckBox dog, CheckBox cat, CheckBox parrot){


    if (dog.isChecked() && !cat.isChecked() && !parrot.isChecked()){
        dogCounter += 5;
    }else if (cat.isChecked() && !dog.isChecked() && !parrot.isChecked()){
        catCounter += 5;
    } else{
        //nobody gets points
    }
}

 public void processDrool(final RadioGroup radioGroup){

    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {

            int radioId= radioGroup.getCheckedRadioButtonId();
            droolRadioButton = (RadioButton)findViewById(radioId);

            if (droolRadioButton.getText().equals("yes")){
                dogCounter+= 5;
            }else if (droolRadioButton.getText().equals("no")){
                catCounter+= 5;
            }

        }
    });
}

  public void processCanine(final RadioGroup radioGroup){

    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {

            int radioId= canineRadioGroup.getCheckedRadioButtonId();
            canineRadioButton = (RadioButton)findViewById(radioId);

            if (canineRadioButton.getText().equals("yes")){
                catCounter+= 5;
            }else if (canineRadioButton.getText().equals("no")){
                dogCounter+= 5;
            }

        }
    });
}

}

1 个答案:

答案 0 :(得分:0)

我认为你只需要改变你的processCutest调用,使其进入onClick方法,但是在toast.makeText调用之前。像这样:

showResultButton= (Button)findViewById(R.id.showResults);
showResultButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        processCutest(cutestCheckBoxDog, cutestCheckBoxCat, cutestCheckBoxParrot);

        Toast.makeText(getApplicationContext(),catCounter +  " " + dogCounter, Toast.LENGTH_LONG).show();

我假设实际的复选框是在别处定义的。你的复选框出现了吗?如果是这样,您可能还想将processDrool和processCanine调用放在那里。