使用CheckBox的OnCheckedChangeListener做事件触发,效果图:

d4a7f418b99275b704d51db499a66f6c.png

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;

} }

原文:http://blog.csdn.net/wu20093346/article/details/38388811

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐