读书人

计算器的演算控件不能连续点击2次求

发布时间: 2012-09-05 15:19:34 作者: rapoo

计算器的运算控件不能连续点击2次,求高手解答!!!!

计算器的运算button连续点击2次就会报错,我知道是什么原因,但是就是不知道该怎么写。。。
怎样让它连续点击只有一次起作用?
下面是我的运算代码。。。求高手解答~~~!!!!
butjia.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag == 0){
flag = 1;
}
else if(flag == -1){
editText1_value1 = "" + result ;
editText1_value2 = "" ;
flag = 1;
}
else{
int m = calulate();
editText1_value1 = "" + m;
editText1_value2 = "";
flag = 1;
}
}

});
butjian.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag == 0){
flag = 2;
}
else if(flag == -1){
editText1_value1 = "" + result ;
editText1_value2 = "" ;
flag = 2;
}
else{
int m = calulate();
editText1_value1 = "" + m;
editText1_value2 = "";
flag = 2;
}
}

});
butcheng.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag == 0){
flag = 3;
}
else if(flag == -1){
editText1_value1 = "" + result ;
editText1_value2 = "" ;
flag = 3;
}
else{
int m = calulate();
editText1_value1 = "" + m;
editText1_value2 = "";
flag = 3;
}
}

});
butchu.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag == 0){
flag = 4;
}
else if(flag == -1){
editText1_value1 = "" + result ;
editText1_value2 = "" ;
flag = 4;
}
else{
int m = calulate();
editText1_value1 = "" + m;
editText1_value2 = "";
flag = 4;
}
}

});
butdengyu.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag == 0){
editText1.setText(editText1_value1);
}else{
calulate();
}
}

});
butce.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
result = 0;
flag = 0;
editText1.setText("");

}});

}
public int calulate(){
int a,b;
a=Integer.parseInt(editText1_value1);
b=Integer.parseInt(editText1_value2);
switch(flag){
case 1: result = a+b ;
editText1.setText(""+result);
editText1_value1 = "";
editText1_value2 = "";
flag = -1;
break;
case 2: result = a-b;
editText1.setText(""+result);
editText1_value1 = "";
editText1_value2 = "";
flag = -1;
break;
case 3: result = a*b;
editText1.setText(""+result);
editText1_value1 = "";


editText1_value2 = "";
flag = -1;
break;
case 4: if(b==0){
editText1.setText("被除数不能为0");
editText1_value1 = "";
editText1_value2 = "";
flag = -1;
}
else{
result = a/b;
editText1.setText(""+result);
editText1_value1 = "";
editText1_value2 = "";
flag = -1;
}

break;
}
return result;
}

[解决办法]
点击一次就让按钮不可用, 等计算完显示数据了再恢复
或者设置标志量, 调用calulate之前先检查这个标志量

读书人网 >Android

热点推荐