2016-09-16 3 views
-3

У меня есть две кнопки: 1 и 2. Кнопка 1 используется для увеличения числа от 0 до 15, а для уменьшения используется кнопка 2, а входное значение - это значение 0.Как увеличить/уменьшить число, нажав кнопку?

Предположим, что начальное значение числа равно -1. Затем я нажимаю кнопку 1, число увеличится до 1 значения (0). Если я нажать 5 раз, текущее значение числа равно 4. Затем я нажмите кнопку 2, значения будут уменьшаться от 5

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

Если значение меньше 0, то устанавливается кнопка 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); 
     } 
    } 

Update: Теперь я могу напечатать, как 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

Define 'не работает хорошо' – 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

По-прежнему от 0 до 5 при нажатии кнопки 1 и 4 на 0 при нажатии кнопки 2 вместо 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. если вы не замените 15 на 4. Я посмотрю ваш код. – 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. Его, как из 100 единиц, вы нажимаете уровень громкости, он не отображает 100. Он отображает 99. Установите свой 'number = 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)); 
       } 
      } 
     } 
    }); 
} 

}

Смежные вопросы