今天学了checkbox的使用

activity_main.xml文件为

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好:">
</TextView>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cb1"
android:text="游泳"> </CheckBox>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cb2"
android:text="旅游"> </CheckBox>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cb3"
android:text="爬山"> </CheckBox>
</LinearLayout> </LinearLayout>

mainactivity

checkbox的使用有两种情况

 package com.example.test;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { private CheckBox cb1,cb2,cb3; protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb1=findViewById(R.id.cb1);
cb2=findViewById(R.id.cb2);
cb3=findViewById(R.id.cb3);cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { }
});
cb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { }
});
cb3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { }
});

但第一种太麻烦,需要写三个监听器,比较繁琐,于是有了第二种

package com.example.test;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { private CheckBox cb1,cb2,cb3;
private String msg1,msg2,msg3;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb1=findViewById(R.id.cb1);
cb2=findViewById(R.id.cb2);
cb3=findViewById(R.id.cb3);
//一个监听器
CompoundButton.OnCheckedChangeListener occl=new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(buttonView.getId()==R.id.cb1)
{
if(isChecked)
{
msg1="游泳";
}else {
msg1=null;
}
}
if(buttonView.getId()==R.id.cb2)
{
if(isChecked)
{
msg2="旅游";
}else {
msg2=null;
}
}
if(buttonView.getId()==R.id.cb3)
{
if(isChecked)
{
msg3="爬山";
}else {
msg3=null;
}
}
Toast.makeText(MainActivity.this,msg1+msg2+msg3,Toast.LENGTH_SHORT).show();
}
};
cb1.setOnCheckedChangeListener(occl);
cb2.setOnCheckedChangeListener(occl);
cb3.setOnCheckedChangeListener(occl);
}
}

第二种写法只需要一个监听器,且可以同时选择多个选择

效果如下

通过checkb控件可以选择多个数据

软件工程日报七——checkbox的使用的更多相关文章

  1. 现代软件工程 第七章 【MSF】练习与讨论

    7.7  移山开发方法——比TFS敏捷更精简 几个软件学院的学生来请教阿超,同学们自豪地说,我们要用全套TFS敏捷开发模式开发项目! 真的?阿超不敢相信. 同学: 对!我们要用全5个工作项类型 – 任 ...

  2. 软件工程第七周psp

    1.PSP表格 类别 任务 开始时间 结束时间 中断时间 delta时间 立会 汇报昨天的成绩,分配任务,部署计划 10月27日18:00 10月27日18:36 0 36分钟 准备工作 查阅有关资料 ...

  3. 敏捷软件开发 VS. 传统软件工程

    敏捷软件开发 VS. 传统软件工程 软件工程这一术语1968年被提出,之后美国软件工程专家巴利·玻姆对十多年间研究软件工程的专家学者们提出的一些准则与信条,于1983年对提出软件工程的七条基本定理,将 ...

  4. 给工程师的 10 条哲理(浅薄者迷信运气,强者相信因果,软件复制成本为零,文凭不重要,AWS使得创业成本为零,每个手机都是口袋里的强大电脑)

    无论是主题分布式数据库,微服务,Soylent,尤伯杯,或者矮人要塞,我们试图从物质分离出来炒作,推迟叙事的客人.与尊重有软件工程日报的社论部分客观性. 一位渠道的成员说,“当软件工程每日的意见公布, ...

  5. 30K iOS程序员的简述:如何快速进阶成为高级开发人员

    前言: 本篇文章适用于所有在这个行业已经有了几年时间后想要在职业生涯中取得突破的开发人员,编程人员和程序员(或者你可能刚刚开始,但希望你能看到你的路径) 本文适合那些有着简单愿望的人:你想成为一名高级 ...

  6. 实验八 <FBG> 基于原型的团队项目需求调研与分析

    <FBG>团队项目原型设计:http://www.cnblogs.com/ymm3/p/9012534.html GitHub的链接地址:https://github.com/FBGfbg ...

  7. 结对编程2—Fault&Error&Failure

    学习进度表 点滴成就 学习时间 新编写代码行数 博客量(篇) 学到知识点 第一周 8 0 0 了解软件工程 第二周 10 0 1 博文一篇 第三周 15 0 2 选择项目.调查问卷 第四周 20 80 ...

  8. PIE结对编程

    学习进度条 点滴成就 学习时间 新编写代码行数 博客量 学到知识点 第一周 8 0 0 了解软件工程 第二周 7 0 1 了解软件工程 第三周 11 0 1 用例图 第四周 6 25 0 结对编程 第 ...

  9. ruanjiangongcheng1

    软体工程的方法有很多方面的意义.包括专案管理,分析,设计,程序的编写,测试和质量控制. 软体设计方法可以区别为重量级的方法和轻量级的方法.重量级的方法中产生大量的正式文档. 著名的重量级开发方法包括I ...

  10. CSDN日报20170312——《成功人士的七个习惯》

    [程序人生]成功人士的七个习惯 作者:liumiaocn 所谓温故而知新.重读往往会带来新的收获,即使没有新的收获,可以带来新的思考也是非常不错.在个人成长的历程中.习惯所扮演的角色不言而喻,Step ...

随机推荐

  1. vue3 ts遇到的问题

    main.ts中的 createApp(App),只作用于一个,如果,有两个,则并不是一个对象,另一个会不生效

  2. vue+element 返回数组或json数据自定义某列显示的处理--两种方法

    本文是作者开发一个业务需求时,将返回数据列表的其中一个数据长度很长的字段处理成数组,并将其作为子表显示的过程,具体样式如下(数据做了马赛克处理) 返回的过长字段数据处理(用分号分隔的一个长字段): t ...

  3. 树莓派开机启动VNC

    sudo nano /etc/init.d/vncserver #!/bin/sh ### BEGIN INIT INFO # Provides: vncserver # Required-Start ...

  4. Vue 组件VueComponent中_ _proto_ _ 原型对象的指向(指向Vue的原型对象 _ _proto_ _)

    1.VueComponent.prototype.__proto__ === Vue.prototype 2.让组件实例对象(vc)可以访问到Vue原型上的属性.方法 图片如下: 案例: Vue.pr ...

  5. openssh 升级

    1.基础安装包准备  PS:最好先下载 telnet 服务端并启动,以免 sshd 服务启动失败后无法登录 官方网站下载最新版*.tar.gz安装包: 官方下载地址:http://ftp.openbs ...

  6. Android 7.0+模拟器Fiddler抓包详细教程 fiddler443问题解决办法

    https://blog.csdn.net/qq_43278826/article/details/124291040 [前言]         众所周知,假如设备是android 7.0+的系统同时 ...

  7. EF core 反向工程 连接字符串

    Scaffold-DbContext 'Data Source=.;Initial Catalog=DB;User ID=sa;Password=1;Integrated Security=true; ...

  8. postman 使用简单汇总

    postman官网下载地址:https://www.postman.com/downloads/ Postman支持功能 1.快速构建 2.参数化与变量设置提取 3.查看请求数据 4.提供断言功能 5 ...

  9. 在docker中导入python的包时ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

    问题: ImportError: libGL.so.1: cannot open shared object file: No such file or directory ImportError: ...

  10. Java面向对象之回顾方法及加深

    回顾方法及加深 方法的定义 修饰符 返回类型 break和return的区别 1.break:跳出switch,结束循环 2.return:代表方法结束,返回一个结果 方法名:注意规范.见名知意 参数 ...