【问题标题】:How to call function on android checkbox checked?如何在选中的android复选框上调用函数?
【发布时间】:2015-07-28 09:44:09
【问题描述】:

我有一个活动,其中包含 4 个复选框。所以我的问题是 - 当所有这些复选框都被选中时,我想弹出一条消息,应该说“干得好!”,所以我的问题是我该怎么做?

Code of the activity

Code of the checkboxes

【问题讨论】:

  • 它很简单,如果所有复选框都被选中然后显示消息,选中复选框是选中还是不使用 checkbox1.ischecked() == true。
  • 活动代码我什么也没看到 :)
  • 请将代码作为文本而不是图片链接添加到您的问题中

标签: android android-checkbox oncheckedchanged


【解决方案1】:

将此代码添加到您的 onCreate 方法中。

注意:您可以使用复选框数组来缩短代码。

但这将帮助您了解该怎么做。

首先,您必须在 java 文件中创建复选框变量。然后为每个复选框设置 onCheckChanged 监听器。

CheckBox cb1=(CheckBox)findViewById(R.id.checkBox);
CheckBox cb2=(CheckBox)findViewById(R.id.checkBox2);
CheckBox cb3=(CheckBox)findViewById(R.id.checkBox3);
CheckBox cb4=(CheckBox)findViewById(R.id.checkBox4);

cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(cb1.isChecked()&&cb2.isChecked()&&cb3.isChecked()&&cb4.isChecked())
            Toast.makeText(getApplicationContext(),"Good job." , Toast.LENGTH_SHORT).show();
        
    }
});

cb2.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(cb1.isChecked()&&cb2.isChecked()&&cb3.isChecked()&&cb4.isChecked())
            Toast.makeText(getApplicationContext(),"Good job." , Toast.LENGTH_SHORT).show();
        
    }
});

cb3.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(cb1.isChecked()&&cb2.isChecked()&&cb3.isChecked()&&cb4.isChecked())
            Toast.makeText(getApplicationContext(),"Good job." , Toast.LENGTH_SHORT).show();
        
    }
});

cb4.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(cb1.isChecked()&&cb2.isChecked()&&cb3.isChecked()&&cb4.isChecked())
            Toast.makeText(getApplicationContext(),"Good job." , Toast.LENGTH_SHORT).show();
        
    }
});

在类开始之前插入此导入语句 (public class flygos2..)。您可以看到还有其他导入语句。

import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

【讨论】:

  • 当我添加此代码并更改为复选框上的正确名称时,我在所有内容上都出现大量错误,为什么?
  • @Kvenna 你导入了必要的库吗?您遇到的第一个错误是什么。
  • @Kvenna 右侧名称复选框应为复选框。它应该是复选框中的大写 B 字母,因为这是 xml 文件中第一个复选框的 ID。我会编辑答案
  • 对不起,我对 android studio 很陌生,我只对你看到的 html 和 css 有经验。我如何导入到图书馆?出现此错误:gyazo.com/0e57091ddc4c006c4c037ffbf36d3606
  • @Kvenna 没关系,每个人都必须从头开始:) 我更新了答案。在课程开始之前插入该语句..
【解决方案2】:
  1. 在您的 java 文件中添加以下 updateMessage。
  2. 将 android:onClick="updateMessage" 添加到 XML 文件中的每个复选框。这样,当我们选中/取消选中复选框时,将调用updateMessage 方法。
public void updateMessage(View view) {   
    String message = "";
    CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox);
    CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2);
    CheckBox cb3 = (CheckBox) findViewById(R.id.checkBox3);
    CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4);

    if (cb1.isChecked() && cb2.isChecked() && cb3.isChecked() && cb4.isChecked()) {
        message = "Good Job";
    } else if (cb1.isChecked() && cb2.isChecked() && cb3.isChecked()) {
        message = "One Check box is missed";
    } else {
        message = "try again";
    }
}

【讨论】:

    猜你喜欢
    • 2018-09-25
    • 2019-08-11
    • 2013-06-21
    • 2018-11-04
    • 1970-01-01
    • 2016-09-08
    • 2020-10-20
    • 1970-01-01
    • 2015-11-18
    相关资源
    最近更新 更多