|
今天用到的不是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("+"));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView.setText("");[/li][li]}[/li][li]if(mBox2.isChecked())[/li][li]{[/li][li]mTextView2.setText(GetOperation("-"));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView2.setText("");[/li][li]}[/li][li]if(mBox3.isChecked())[/li][li]{[/li][li]mTextView3.setText(GetOperation("*"));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView3.setText("");[/li][li]}[/li][li]if(mBox4.isChecked())[/li][li]{[/li][li]mTextView4.setText(GetOperation("/"));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView4.setText("");[/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("+"));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView.setText("");[/li][li]}[/li][li]if(mBox2.isChecked())[/li][li]{[/li][li]mTextView2.setText(GetOperation("-"));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView2.setText("");[/li][li]}[/li][li]if(mBox3.isChecked())[/li][li]{[/li][li]mTextView3.setText(GetOperation("*"));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView3.setText("");[/li][li]}[/li][li]if(mBox4.isChecked())[/li][li]{[/li][li]mTextView4.setText(GetOperation("/"));[/li][li]}[/li][li]else[/li][li]{[/li][li]mTextView4.setText("");[/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=="+")[/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=="-")[/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=="*")[/li][li]{[/li][li]Temp=Float.parseFloat(mEditText.getText().toString())*[/li][li]Float.parseFloat(mEditText1.getText().toString());[/li][li]}[/li][li]if(Operation=="/")[/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]+"="+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("提示")[/li][li].setMessage("該項不能為空")[/li][li].setPositiveButton("確定", 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()>0 && a.getText().toString().length()>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] |
|