Android-CheckBox 实现计算器

来源:互联网 发布:淘宝培训课程 编辑:程序博客网 时间:2024/04/29 12:01

源代码下载地址: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; } }

2 0