首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

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

2012-09-05 
计算器的运算控件不能连续点击2次,求高手解答!!!!计算器的运算button连续点击2次就会报错,我知道是什么原

计算器的运算控件不能连续点击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之前先检查这个标志量

热点排行