【问题标题】:Android: pass checkbox status to another activity and use in if statementAndroid:将复选框状态传递给另一个活动并在 if 语句中使用
【发布时间】:2016-02-03 07:33:54
【问题描述】:

在我的主要活动中,我有 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 语句在另一个活动中执行某些操作?

【问题讨论】:

  • 只需将值保存到 sharedpreferences 或数据库中

标签: android if-statement android-activity checkbox


【解决方案1】:

使用 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);

然后在我的第二个活动中,就像 poss 所述,这些需要位于顶部:

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...
    }

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

【讨论】:

    【解决方案2】:

    你可以使用意图。

    在您的 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;
        ....
    }
    

    【讨论】:

      【解决方案3】:

      您可以为此使用 Intent 附加功能。

      例如,如果checkBox 1被选中,你可以像这样将extra放入intent中。

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

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

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

      【讨论】:

      • 这很好也很简单,但是你能更新它来展示我如何在我的 if 语句中使用它吗?
      • 您只需在您的 Test.class 中执行 if (check1) 在您检索额外内容后。试试对你有用的东西,我主要是从我的脑海中写出来的。
      • 另外,如果我按照您的方式复制和粘贴,“("check1", true)" 会带有红色下划线。
      • 哦,红色下划线只是因为“putExtras”而不是“putExtra”。除此之外,到目前为止,它只适用于一个复选框。这是我能找到的唯一答案,它显示了如何在 if 语句中使用“check1”。
      • 好吧,请随意接受这个作为答案。正如我所说,错字可能是因为我是凭记忆打字的。我会编辑它
      猜你喜欢
      • 1970-01-01
      • 2014-05-15
      • 2014-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 2020-12-18
      相关资源
      最近更新 更多