Android:将复选框状态传递给另一个活动并在if语句中使用

时间:2015-10-20 01:46:51

标签: android if-statement android-activity checkbox

在我的主要活动中,我有6个复选框,用于选择该人想要进行的测试的哪些部分。我看了一堆试图弄清楚要做什么的页面,但我无法清楚地理解我应该做什么。

让我们说,在我的主要活动中,我有复选框:

            CheckBox grade1 = (CheckBox)findViewById(R.id.grade1);
            CheckBox grade2 = (CheckBox)findViewById(R.id.grade2);
            CheckBox grade3 = (CheckBox)findViewById(R.id.grade3);
            CheckBox grade4 = (CheckBox)findViewById(R.id.grade4);
            CheckBox grade5 = (CheckBox)findViewById(R.id.grade5);
            CheckBox grade6 = (CheckBox)findViewById(R.id.grade6);

如果他们进行了检查,我想使用这个onClick将它们传递给我的下一个活动(需要添加任何代码才能使其正常工作):

private void setupMessageButton() {
    Button messageButton = (Button) findViewById(R.id.main_button);

    messageButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            startActivity(new Intent(MainActivity.this, Test.class));
        }
    });
}

然后在我的新活动中,我有if语句,这些语句目前以这种方式编写:

if (grade1.isChecked()){
      // Do stuff
        }

我正在寻找最简单的方法。 TL:DR - 如果在一个活动中选中了复选框,我如何使用该状态在if语句的另一个活动中执行某些操作?

3 个答案:

答案 0 :(得分:3)

使用poss的答案,我能够解决这个问题。我在onClick中的主要活动中有6个复选框。

CheckBox grade1 = (CheckBox)findViewById(R.id.grade1);
CheckBox grade2 = (CheckBox)findViewById(R.id.grade2);
CheckBox grade3 = (CheckBox)findViewById(R.id.grade3);
CheckBox grade4 = (CheckBox)findViewById(R.id.grade4);
CheckBox grade5 = (CheckBox)findViewById(R.id.grade5);
CheckBox grade6 = (CheckBox)findViewById(R.id.grade6);

所以我只需要使用以下代码(也在onClick中)传递它们:

Intent intent = new Intent(MainActivity.this, Test.class);
            intent.putExtra("grade1", grade1.isChecked());
            intent.putExtra("grade2", grade2.isChecked());
            intent.putExtra("grade3", grade3.isChecked());
            intent.putExtra("grade4", grade4.isChecked());
            intent.putExtra("grade5", grade5.isChecked());
            intent.putExtra("grade6", grade6.isChecked());
            startActivity(intent);

然后在我的第二项活动中,就像所说的那样,这些需要在顶部:

Boolean check1 = getIntent().getExtras().getBoolean("grade1");
Boolean check2 = getIntent().getExtras().getBoolean("grade2");
Boolean check3 = getIntent().getExtras().getBoolean("grade3");
Boolean check4 = getIntent().getExtras().getBoolean("grade4");
Boolean check5 = getIntent().getExtras().getBoolean("grade5");
Boolean check6 = getIntent().getExtras().getBoolean("grade6");

对于我的if语句,我只是这样做:

if (check1){
        // Do stuff
    }
if (check2){
        // Do more stuff
    }
if (check2){
        // Etc...
    }

感谢您帮助解决这个问题!

答案 1 :(得分:0)

你可以使用Intent extras。

例如,如果选中了checkBox 1,则可以像这样添加额外的意图。

Intent intent = new Intent(MainActivity.this, Test.class);
intent.putExtra("check1", true);
startActivity(intent);

在Test.class中,您只需检索值。

Boolean check1 = getIntent().getExtras().getBoolean("check1");

答案 2 :(得分:0)

您可以使用意图。

在您的MainActivity.java中:

private void setupMessageButton() {
    Button messageButton = (Button) findViewById(R.id.main_button);

    messageButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, Test.class);
        intent.putExtra("selectedGrade", v.getId());              
        startActivity(intent);
    }
}

在你的Test.java中:

int selectedGrade = getIntent().getExtras().getint("selectedGrade");
switch (selectedGrade) {
    case R.id.grade1: //do something
        break;
    case R.id.grade2: //do something
        break;
    ....
}