zoukankan      html  css  js  c++  java
  • 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;
     } }

  • 相关阅读:
    【转】Java操作CSV文件导入导出
    【转】Java压缩和解压文件工具类ZipUtil
    Python之multiprocessing.Pool(创建多个子进程)
    Openstack平台虚拟机疏散失败提示(pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query')问题
    kubernetes部署redis主从高可用集群
    Ceph性能测试
    python日志模块
    kubernetes删除pod,pod一直处于Terminating状态
    python执行提示“ImportError: No module named OpenSSL.crypto”
    二进制部署kubernetes集群_kube-apiserver提示"watch chan error: etcdserver: mvcc: required revision has been compacted'
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7045229.html
Copyright © 2011-2022 走看看