Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 560|回复: 0

CheckBox<又>计算器——Android学习

[复制链接]

该用户从未签到

发表于 2012-3-20 15:01:03 | 显示全部楼层 |阅读模式
今天用到的不是Button而是改用了CheckBox使用的是例用CheckBox的OnCheckedChangeListener做事件触发,最终效果如图:


  下面我将一一讲解代码思路:首先从两个文本框开始,先上代码
    [li]list=new OnKeyListener() {[/li][li][/li][li]@Override[/li][li]public boolean onKey(View v, int keyCode, KeyEvent event) {[/li][li]// TODO Auto-generated method stub[/li][li]if(mBox1.isChecked())[/li][li]{[/li][li]mBox1.setChecked(false);[/li][li]}[/li][li]if(mBox2.isChecked())[/li][li]{[/li][li]mBox2.setChecked(false);[/li][li]}[/li][li]if(mBox3.isChecked())[/li][li]{[/li][li]mBox3.setChecked(false);[/li][li]}[/li][li]if(mBox4.isChecked())[/li][li]{[/li][li]mBox4.setChecked(false);[/li][li]}[/li][li][/li][li]return false;[/li][li]}[/li][li]};[/li][li]mEditText.setOnKeyListener(list);[/li][li]mEditText1.setOnKeyListener(list);
    [/li]

复制代码
  上述代码用意在于,当用户之前选过计算方法,想从新输入时,将会激发文本的onkey事件,在事件激发后我们要做的就是如果某一checkbox选中我们将让他失去选中的效果,以便当用户输入完成后可以重新点击计算结果。

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

复制代码
  如果用户选中将根据选中的某一个checkbox返回计算结果,如果uncheck将清空文本.做这一步之前必须限制两个文本框必须输入,否则程序会崩溃。

  全部代码如下:
    [li]package cn.terry;[/li][li][/li][li]import android.app.Activity;[/li][li]import android.app.AlertDialog;[/li][li]import android.content.DialogInterface;[/li][li]import android.os.Bundle;[/li][li]import android.view.KeyEvent;[/li][li]import android.view.View;[/li][li]import android.view.View.OnKeyListener;[/li][li]import android.widget.*;[/li][li]import android.widget.CompoundButton.OnCheckedChangeListener;[/li][li]public class CheckBoxCalc extends Activity {[/li][li]private TextView mTextView;[/li][li]private TextView mTextView2;[/li][li]private TextView mTextView3;[/li][li]private TextView mTextView4;[/li][li]private CheckBox mBox1;[/li][li]private CheckBox mBox2;[/li][li]private CheckBox mBox3;[/li][li]private CheckBox mBox4;[/li][li]private EditText mEditText;[/li][li]private EditText mEditText1;[/li][li]private boolean isbool=true;[/li][li]private OnCheckedChangeListener listner;[/li][li]private Float Temp;[/li][li]private String Experssion;[/li][li]private OnKeyListener list;[/li][li]/** Called when the activity is first created. */[/li][li]@Override[/li][li]public void onCreate(Bundle savedInstanceState) {[/li][li]super.onCreate(savedInstanceState);[/li][li]setContentView(R.layout.main);[/li][li]mTextView=(TextView)findViewById(R.id.result1);[/li][li]mTextView2=(TextView)findViewById(R.id.result2);[/li][li]mTextView3=(TextView)findViewById(R.id.result3);[/li][li]mTextView4=(TextView)findViewById(R.id.result4);[/li][li]mBox1=(CheckBox)findViewById(R.id.Plus);  //加減乘除[/li][li]mBox2=(CheckBox)findViewById(R.id.Cut);[/li][li]mBox3=(CheckBox)findViewById(R.id.Ride);[/li][li]mBox4=(CheckBox)findViewById(R.id.Except);[/li][li]mEditText=(EditText)findViewById(R.id.first);[/li][li]mEditText1=(EditText)findViewById(R.id.second);[/li][li]list=new OnKeyListener() {[/li][li][/li][li]@Override[/li][li]public boolean onKey(View v, int keyCode, KeyEvent event) {[/li][li]// TODO Auto-generated method stub[/li][li]if(mBox1.isChecked())[/li][li]{[/li][li]mBox1.setChecked(false);[/li][li]}[/li][li]if(mBox2.isChecked())[/li][li]{[/li][li]mBox2.setChecked(false);[/li][li]}[/li][li]if(mBox3.isChecked())[/li][li]{[/li][li]mBox3.setChecked(false);[/li][li]}[/li][li]if(mBox4.isChecked())[/li][li]{[/li][li]mBox4.setChecked(false);[/li][li]}[/li][li][/li][li]return false;[/li][li]}[/li][li]};[/li][li]mEditText.setOnKeyListener(list);[/li][li]mEditText1.setOnKeyListener(list);[/li][li][/li][li][/li][li][/li][li]listner=new OnCheckedChangeListener() {[/li][li][/li][li]@Override[/li][li]public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {[/li][li]// TODO Auto-generated method stub[/li][li]switch (buttonView.getId()) {[/li][li]case R.id.Plus:[/li][li]if(!isEmpty(mEditText,mEditText1))[/li][li]{[/li][li]Confirm();[/li][li]mBox1.setChecked(false);[/li][li]return;[/li][li]}[/li][li]break;[/li][li]case R.id.Cut:[/li][li]if(!isEmpty(mEditText,mEditText1))[/li][li]{[/li][li]Confirm();[/li][li]mBox2.setChecked(false);[/li][li]return;[/li][li]}[/li][li]break;[/li][li]case R.id.Ride:[/li][li]if(!isEmpty(mEditText,mEditText1))[/li][li]{[/li][li]Confirm();[/li][li]mBox3.setChecked(false);[/li][li]return;[/li][li]}[/li][li]break;[/li][li]case R.id.Except:[/li][li]if(!isEmpty(mEditText,mEditText1))[/li][li]{[/li][li]Confirm();[/li][li]mBox4.setChecked(false);[/li][li]return;[/li][li]}[/li][li]break;[/li][li]default:[/li][li]break;[/li][li]}[/li][li][/li][li]if(mBox1.isChecked())[/li][li]{[/li][li]mTextView.setText( GetOperation(&quot;+&quot;));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView.setText(&quot;&quot;);[/li][li]}[/li][li]if(mBox2.isChecked())[/li][li]{[/li][li]mTextView2.setText(GetOperation(&quot;-&quot;));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView2.setText(&quot;&quot;);[/li][li]}[/li][li]if(mBox3.isChecked())[/li][li]{[/li][li]mTextView3.setText(GetOperation(&quot;*&quot;));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView3.setText(&quot;&quot;);[/li][li]}[/li][li]if(mBox4.isChecked())[/li][li]{[/li][li]mTextView4.setText(GetOperation(&quot;/&quot;));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView4.setText(&quot;&quot;);[/li][li]}[/li][li]}[/li][li]};[/li][li]mBox1.setOnCheckedChangeListener(listner);[/li][li]mBox2.setOnCheckedChangeListener(listner);[/li][li]mBox3.setOnCheckedChangeListener(listner);[/li][li]mBox4.setOnCheckedChangeListener(listner);[/li][li][/li][li]}[/li][li]public String GetOperation(String Operation)[/li][li]{[/li][li]if(Operation==&quot;+&quot;)[/li][li]{[/li][li]Temp=Float.parseFloat(mEditText.getText().toString())+[/li][li]Float.parseFloat(mEditText1.getText().toString());[/li][li][/li][li]}[/li][li]if(Operation==&quot;-&quot;)[/li][li]{[/li][li]Temp=Float.parseFloat(mEditText.getText().toString())-[/li][li]Float.parseFloat(mEditText1.getText().toString());[/li][li][/li][li]}[/li][li]if(Operation==&quot;*&quot;)[/li][li]{[/li][li]Temp=Float.parseFloat(mEditText.getText().toString())*[/li][li]Float.parseFloat(mEditText1.getText().toString());[/li][li]}[/li][li]if(Operation==&quot;/&quot;)[/li][li]{[/li][li]Temp=Float.parseFloat(mEditText.getText().toString())/[/li][li]Float.parseFloat(mEditText1.getText().toString());[/li][li]}[/li][li]Experssion=mEditText.getText().toString()+Operation+mEditText1.getText().toString()[/li][li]+&quot;=&quot;+Temp.toString();[/li][li]return Experssion;[/li][li]}[/li][li][/li][li][/li][li]public void Confirm()[/li][li]{[/li][li]new AlertDialog.Builder(CheckBoxCalc.this)[/li][li].setTitle(&quot;提示&quot;)[/li][li].setMessage(&quot;該項不能為空&quot;)[/li][li].setPositiveButton(&quot;確定&quot;, new DialogInterface.OnClickListener() {[/li][li][/li][li]@Override[/li][li]public void onClick(DialogInterface dialog, int which) {[/li][li]// TODO Auto-generated method stub[/li][li][/li][li]}[/li][li]})[/li][li].create().show();[/li][li]}[/li][li]public boolean isEmpty(EditText e,EditText a)[/li][li]{[/li][li]if(e.getText().toString().length()&gt;0 &amp;&amp; a.getText().toString().length()&gt;0)[/li][li]{[/li][li]isbool= true;[/li][li]}[/li][li]else[/li][li]{[/li][li]isbool=false;[/li][li]}[/li][li]return isbool;[/li][li]}[/li][li]}
    [/li]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 22:50 , Processed in 0.345160 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表