• Android-CheckBox 实现计算器


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

  • 相关阅读:
    开始学习C#
    关于串口数据读取的几个问题
    Joel测试
    VC查找内存泄漏技巧【转】
    思考题一
    自我介绍
    2020面向对象程序设计寒假作业1 题解
    思考题二
    题解 洛谷P2158 【[SDOI2008]仪仗队】
    深入浅出InfoPath系列
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7045229.html
Copyright © 2020-2023  润新知