2016-09-16 107 views
-3

我有两个按钮:1和2.按钮1用于将数字从0增加到15,按钮2用于减少,输入数字的当前值为0.按下按钮时如何增加/减少数字?

假设该号码的初始值是= -1。然后我按下按钮1,数字将增加到1值(0)。如果我按5倍,电流数值是4。然后,我按按钮2,这些值将如果该值小于0 5

For example, 
Button 1 press       Button 2 press 
0 
1 
2 
3 
4 
               4 
               3 
               2 
               ... 

下降,则设置按钮2被禁止,如果值大于15,设置按钮1被禁用。我使用下面的代码,但它不能很好地工作。你能告诉我发生了什么事吗?

int number=-1; 
public void onClickBtn1 (View v) 
    {   
     number++; 
     btn2.setEnabled(true); 
     if(number>=16) { 
      number = 16; 
      btn1.setEnabled(false); 
     } 

     if(number<=15) {    
      Log.d("TAG", number); 
     } 
    } 
    public void onClickBtn2 (View v) 
    { 
     btnTop.setEnabled(true); 
     number--; 
     if(number<=-1) { 
      number =-1; 
      btn2.setEnabled(false); 
     } 
     if(number>=0) {    
      Log.d("TAG",number); 
     } 
    } 

更新:现在,我可以打印为0到5度(按按钮1)和(5比0)时,按下按钮2,但该代码看起来复杂,按钮禁用不工作的时候数是在比图15(< = 16),和小于0(> = - 1)

我的代码是

int number=-1; 
public void onClickBtn1 (View v) 
    {   
     btn2.setEnabled(true); 
     if(number<=-1) { 
      number =-1; 
     } 
     number++; 
     if(number>=16) { 
      number = 16; 
      btn1.setEnabled(false); 
     } 
     if(number<=15) { 
      Log.d("TAG",number); 
     } 
    } 
    public void onClickBtn2 (View v) 
    { 
     btn1.setEnabled(true); 

     if(number<=-1) { 
      number =-1; 
      btn2.setEnabled(false); 
     } 
     if(number>=16) { 
      number = 15; 
      btn1.setEnabled(false); 
     } 
     if(number>=0) {   
      Log.d("TAG",number); 
     } 
     number--; 
    } 
+0

你会得到什么错误? – Marat

+0

定义'不好' – 0xDEADC0DE

+0

数字显示不符合我的预期。它显示0 .... 4和3..2 ... – Jame

回答

2

这里是简单的逻辑。

Button add, remove; 
TextView value; 
int temp = 0; 
int lastClicked = -1; 
int ADD = 1; 
int REMOVE = 2; 


    add.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (lastClicked == REMOVE) { 
       lastClicked = ADD; 
       return; 
      } 
      if (temp < 15) { 
       temp++; 
       add.setEnabled(true); 
      } else { 
       temp = 15; 
      } 
      if (temp == 15) { 
       add.setEnabled(false); 
      } 
      if (temp > 0) { 
       remove.setEnabled(true); 
      } 
      lastClicked = ADD; 
      value.setText("" + temp); 
     } 
    }); 
    remove.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (lastClicked == ADD) { 
       lastClicked = REMOVE; 
       return; 
      } 
      if (temp > 0) { 
       temp--; 
       remove.setEnabled(true); 
      } else { 
       temp = 0; 
      } 
      if (temp == 0) { 
       remove.setEnabled(false); 
      } 
      if (temp < 15) { 
       add.setEnabled(true); 
      } 
      lastClicked = REMOVE; 
      value.setText("" + temp); 
     } 
    }); 

它应该足以满足您的问题。 让我知道是否有问题。

+0

当按下按钮1,按下按钮1和按钮4时,它仍然是从0到5,而不是5到0 – Jame

+0

我认为你明白我需要什么。但是,当我按下按钮2时,起始值仍然是4到0而不是5到0.您可以在https://www.dropbox.com/s/scvlzpjrcyzo36g/TestIncrease.zip下载我的代码。dl = 0 – Jame

+0

我在10分钟前更新了代码。它适用于0和15.不是1-> 4和4-> 1。除非你用4替换15。我会看你的代码。 – DearDhruv

1

我认为这是你想达到的。尝试这个。

public void onClickBtn1 (View v) 
{   
    number++; 
    btn2.setEnabled(true); 

    if(number==15) { 
     btn1.setEnabled(false); 
    } 

    Log.d("TAG", number); 
} 

public void onClickBtn2 (View v) 
{ 
    btn1.setEnabled(true); 
    number--; 
    if(number==0) { 
     btn2.setEnabled(false); 
    }   

    Log.d("TAG",number); 
} 
+0

这是不正确的。它是从0到5,但按下按钮2是从4到0而不是5到0 – Jame

+0

当然这就是它的工作原理。当你按下它应该显示4,因为5-1 = 4。它像从100volume你按下音量,它不显示100.它显示99.设置你的'数字= 0;'希望有帮助 –

0

据我理解你的问题如下可能的解决

全局变量

public final String BUTTON1 = "button1", BUTTON2 = "button2"; 
TextView button2; 
int number = 0; 
String lastButtonClicked = "button1"; 

和你buttonClickListeners

button1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     button2.setEnabled(true); 
     if (lastButtonClicked.equals(BUTTON1) && number < 15) 
      number++; 
     lastButtonClicked = BUTTON1; 
     if (number == 15) { 
      button1.setEnabled(false); 
     } 
     Log.d("TAG", "" + number); 
    } 
}); 
button2.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     button1.setEnabled(true); 
     if (lastButtonClicked.equals(BUTTON2) && number > 0) 
      number--; 
     lastButtonClicked = BUTTON2; 
     if (number == 0) { 
      button2.setEnabled(false); 
     } 
     Log.d("TAG", "" + number); 
    } 
}); 
button2.setEnabled(false); 
Log.d("TAG", "" + 0); 
+0

不,这有与其他两个答案相同的问题在这里。 –

+0

@ user8430是你的问题解决了吗? – Nikhil

+0

@indramurari:我很忙。我正在检查 – Jame

0
Button button1, button2; 
int number = -1, initial = -1; 

button2.setEnabled(false); // initially setting button2 disable 

button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      if(number < 15) { 
       number++; 
      } 
//this is because: If the value is smaller than 0, then set button 2 is disabled -> enabling if > 0 
      if(number > 0) { 
       button2.setEnabled(true); 
      } 

      if(number == 15){ 
       button1.setEnabled(false); //because of range: from 0 to 15 
      } 

     } 
    }); 

button2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      button1.setEnabled(true); 

// below condition is for: (Then I press the button 1, the number will increase to 1 value (0). If I press 5 times, the current number value is 4. Then I press the button 2, the values will decrease from 5) 

//and initial value is -1 for once, as I think you didn't need to check it later because range is 0-15 but initially you are taking -1. 

      if(initial == -1){ 

       number = number - initial; 
       initial = 0; // changed the value 
      } 


      if(number > 0) { 
       number--; 
      } 

//as your range is 0-15, so can't be less than 0 

      if(number == 0){ 
       button2.setEnabled(false); 
      } 
     } 
    }); 
0
public class MainActivity extends AppCompatActivity { 
int number = -1; 
int total; 
Button plus, minus; 
TextView textViewTotal; 
private static String TAG="MainActivity"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    plus = (Button) findViewById(R.id.btn_plus); 
    minus = (Button) findViewById(R.id.btn_minus); 
    textViewTotal = (TextView) findViewById(R.id.total); 

    plus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      total = number; 
      if(number == 15) { 
       plus.setEnabled(false); 
      } else { 
       number++; 
       plus.setEnabled(true); 
       textViewTotal.setText(String.valueOf(number)); 
      } 
      if (number > 0) { 
       minus.setEnabled(true); 
      } 
     } 
    }); 

    minus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      total = number; 
      if(number < -1) { 
       minus.setEnabled(false); 
       plus.setEnabled(true); 
      } else { 
       minus.setEnabled(true); 
       plus.setEnabled(true); 
       number --; 
       textViewTotal.setText(String.valueOf(number+1)); 
       if (total == number) { 
        number--; 
        textViewTotal.setText(String.valueOf(number)); 
       } 
      } 
     } 
    }); 
} 

}

相关问题