源码下载地址:http://download.csdn.net/detail/wu20093346/7718055

使用CheckBox的OnCheckedChangeListener做事件触发,效果图:

 list=new OnKeyListener() {

 @Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(mBox1.isChecked())
{
mBox1.setChecked(false);
}
if(mBox2.isChecked())
{
mBox2.setChecked(false);
}
if(mBox3.isChecked())
{
mBox3.setChecked(false);
}
if(mBox4.isChecked())
{
mBox4.setChecked(false);
} return false;
}
};
mEditText.setOnKeyListener(list);
mEditText1.setOnKeyListener(list);

如代码所写。每当用户又一次输入数字后。就会激发文本框的onKey事件,让全部的CheckBox变成不选中状态。

 listner=new OnCheckedChangeListener() {

 @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
switch (buttonView.getId()) {
case R.id.Plus:
if(!isEmpty(mEditText,mEditText1))
{
Confirm();
mBox1.setChecked(false);
return;
}
break;
case R.id.Cut:
if(!isEmpty(mEditText,mEditText1))
{
Confirm();
mBox2.setChecked(false);
return;
}
break;
case R.id.Ride:
if(!isEmpty(mEditText,mEditText1))
{
Confirm();
mBox3.setChecked(false);
return;
}
break;
case R.id.Except:
if(!isEmpty(mEditText,mEditText1))
{
Confirm();
mBox4.setChecked(false);
return;
}
break;
default:
break;
} if(mBox1.isChecked())
{
mTextView.setText( GetOperation("+"));
}
else
{
mTextView.setText("");
}
if(mBox2.isChecked())
{
mTextView2.setText(GetOperation("-"));
}
else
{
mTextView2.setText("");
}
if(mBox3.isChecked())
{
mTextView3.setText(GetOperation("*"));
}
else
{
mTextView3.setText("");
}
if(mBox4.isChecked())
{
mTextView4.setText(GetOperation("/"));
}
else
{
mTextView4.setText("");
}
}
};
mBox1.setOnCheckedChangeListener(listner);
mBox2.setOnCheckedChangeListener(listner);
mBox3.setOnCheckedChangeListener(listner);
mBox4.setOnCheckedChangeListener(listner);

依据选择的checkbox返回计算结果,假设uncheck将清空文本,选择checkbox之前必需要输入两个数字。

所有代码:

 package cn.terry;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.*;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class CheckBoxCalc extends Activity {
private TextView mTextView;
private TextView mTextView2;
private TextView mTextView3;
private TextView mTextView4;
private CheckBox mBox1;
private CheckBox mBox2;
private CheckBox mBox3;
private CheckBox mBox4;
private EditText mEditText;
private EditText mEditText1;
private boolean isbool=true;
private OnCheckedChangeListener listner;
private Float Temp;
private String Experssion;
private OnKeyListener list;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView=(TextView)findViewById(R.id.result1);
mTextView2=(TextView)findViewById(R.id.result2);
mTextView3=(TextView)findViewById(R.id.result3);
mTextView4=(TextView)findViewById(R.id.result4);
mBox1=(CheckBox)findViewById(R.id.Plus); //加減乘除
mBox2=(CheckBox)findViewById(R.id.Cut);
mBox3=(CheckBox)findViewById(R.id.Ride);
mBox4=(CheckBox)findViewById(R.id.Except);
mEditText=(EditText)findViewById(R.id.first);
mEditText1=(EditText)findViewById(R.id.second);
list=new OnKeyListener() { @Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(mBox1.isChecked())
{
mBox1.setChecked(false);
}
if(mBox2.isChecked())
{
mBox2.setChecked(false);
}
if(mBox3.isChecked())
{
mBox3.setChecked(false);
}
if(mBox4.isChecked())
{
mBox4.setChecked(false);
} return false;
}
};
mEditText.setOnKeyListener(list);
mEditText1.setOnKeyListener(list); listner=new OnCheckedChangeListener() { @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
switch (buttonView.getId()) {
case R.id.Plus:
if(!isEmpty(mEditText,mEditText1))
{
Confirm();
mBox1.setChecked(false);
return;
}
break;
case R.id.Cut:
if(!isEmpty(mEditText,mEditText1))
{
Confirm();
mBox2.setChecked(false);
return;
}
break;
case R.id.Ride:
if(!isEmpty(mEditText,mEditText1))
{
Confirm();
mBox3.setChecked(false);
return;
}
break;
case R.id.Except:
if(!isEmpty(mEditText,mEditText1))
{
Confirm();
mBox4.setChecked(false);
return;
}
break;
default:
break;
} if(mBox1.isChecked())
{
mTextView.setText( GetOperation("+"));
}
else
{
mTextView.setText("");
}
if(mBox2.isChecked())
{
mTextView2.setText(GetOperation("-"));
}
else
{
mTextView2.setText("");
}
if(mBox3.isChecked())
{
mTextView3.setText(GetOperation("*"));
}
else
{
mTextView3.setText("");
}
if(mBox4.isChecked())
{
mTextView4.setText(GetOperation("/"));
}
else
{
mTextView4.setText("");
}
}
};
mBox1.setOnCheckedChangeListener(listner);
mBox2.setOnCheckedChangeListener(listner);
mBox3.setOnCheckedChangeListener(listner);
mBox4.setOnCheckedChangeListener(listner); }
public String GetOperation(String Operation)
{
if(Operation=="+")
{
Temp=Float.parseFloat(mEditText.getText().toString())+
Float.parseFloat(mEditText1.getText().toString()); }
if(Operation=="-")
{
Temp=Float.parseFloat(mEditText.getText().toString())-
Float.parseFloat(mEditText1.getText().toString()); }
if(Operation=="*")
{
Temp=Float.parseFloat(mEditText.getText().toString())*
Float.parseFloat(mEditText1.getText().toString());
}
if(Operation=="/")
{
Temp=Float.parseFloat(mEditText.getText().toString())/
Float.parseFloat(mEditText1.getText().toString());
}
Experssion=mEditText.getText().toString()+Operation+mEditText1.getText().toString()
+"="+Temp.toString();
return Experssion;
} public void Confirm()
{
new AlertDialog.Builder(CheckBoxCalc.this)
.setTitle("alert")
.setMessage("can not be null")
.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub }
})
.create().show();
}
public boolean isEmpty(EditText e,EditText a)
{
if(e.getText().toString().length()>0 && a.getText().toString().length()>0)
{
isbool= true;
}
else
{
isbool=false;
}
return isbool;
} }

Android-CheckBox 实现计算器的更多相关文章

  1. xamarin android checkbox自定义样式

    xamarin android checkbox自定义样式 在drawable文件在新建checkbox_bg.xml文件 <?xml version="1.0" encod ...

  2. android CheckBox控件的定义及事件监听

    http://www.beijibear.com/index.php?aid=336 android CheckBox控件的定义及事件监听,本例实现CheckBox控件的定义及点击事件的监听并显示结果 ...

  3. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

  4. android CheckBox的运用

    CheckBox定义一个同意协议的按钮,只要同意button才可以点击 XML代码 <CheckBox android:id="@+id/checkbox1" android ...

  5. Android checkbox 自定义点击效果

    安卓默认的效果                         自定义后的效果 前面的图片当然可以自己修改. 实现这个效果的步骤如下 1.建立 一个selector 的xml <?xml ver ...

  6. Android Checkbox Example

    1. Custom String 打开 “res/values/strings.xml” 文件, File : res/values/strings.xml <?xml version=&quo ...

  7. Android开发之计算器(一)界面设计

    计算器开发主要涉及到LinearLayout布局.EditText.Button的使用.为android入门基础内容. 打开android studio选择创建一个新的工程,应用程序的名称为Calcu ...

  8. Android checkBox

    checkBox      状态:选中(true),未选中(false)      属性:           checked="true/false"; private Chec ...

  9. Android checkbox和radiobutton 以及Toast和AlertDialog的使用

    package com.example.radiobutton_01; import android.app.Activity; import android.os.Bundle; import an ...

  10. android CheckBox RadioButton 照片和文字的间距问题

    利用自身的定义CheckBox 要么RadioButton时间.定义自己的图标和文字在不同的手机显示不同的音高.有时不太好控制,下面是我自己的定义CheckBox: 在Layout在下面xml: &l ...

随机推荐

  1. Mysql 锁表 for update (引擎/事务)

    因为之前用过oracle,知道利用select * for update 可以锁表.所以很自然就想到在mysql中能不能适应for update来锁表呢. 学习参考如下 由于InnoDB预设是Row- ...

  2. ArcGIS api for javascript——以地理处理结果为条件查询地图

    这里发生什么任务呢?当第一次单击地图,单击的坐标被发送到一个Geoprocessor任务.该任务访问服务器上的通过ArcGIS Server 地理处理服务提供的可用的GIS模型.本例中模型计算驱动时间 ...

  3. POJ 3257 DP

    题意: 思路: 用vector存上本出发点能到的地方&成本&有趣指数(用结构体保存) 然后DP就好了 f[i][j]表示到了i 成本为j的有趣指数最大是多少 f[vec[i][k].e ...

  4. hibernate generator id

    以下内容整理自网络 “assigned” 主键由外部程序负责生成,在   save()   之前指定一个.  “hilo” 通过hi/lo   算法实现的主键生成机制,需要额外的数据库表或字段提供高位 ...

  5. sql中 where语句的用法

    //查询user_id 10到20 之间  30到40之间 //查询user_id 不在10到20之间的

  6. noip 2018 day1 T2 货币系统 完全背包

    Code: #include<cstdio> #include<string> #include<cstring> #include<algorithm> ...

  7. 《五》uploadify插件上传文件

    下载地址:http://www.uploadify.com/wp-content/uploads/files/uploadify.zip 相关配置:http://www.uploadify.com/d ...

  8. java.sql.SQLException:错误 The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.

    错误 方法 添加后面的内容即可

  9. CentOS下安装.net core环境并部署WebAPI

    1.安装CentOS 7 2.安装.net Core 2环境,参考官方文档:(建议采用SDK (tar.gz)安装) https://www.microsoft.com/net/download/li ...

  10. Annotation中Result的params属性

    这个属性只有在重定向时有用,而转发时不会设置参数. 如: @Results({ @Result(name="success", location="page", ...