2016-09-16 136 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)); 
       } 
      } 
     } 
    }); 
} 

}

相關問題