mutlipe кнопки выбор android

Мне интересно, как сделать несколько кнопок, которые имеют возможность вернуться после определенного количества кликов. когда я нажимаю третью неправильную кнопку, она не возвращается. пожалуйста, кто-нибудь может сказать мне, где я иду неправильно.
после третьей попытки следует закрыть активность

private boolean answer = false;
private int turnsLeft = 0;
Button btn1;
Button btn2;
Button btn3;
Button btn4;

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

    btn1 = (Button) findViewById(R.id.btn1);
    btn1.setOnClickListener(this);

    btn2 = (Button) findViewById(R.id.btn2);
    btn2.setOnClickListener(this);

    btn3 = (Button) findViewById(R.id.btn3);
    btn3.setOnClickListener(this);

    btn4 = (Button) findViewById(R.id.btn4);
    btn4.setOnClickListener(this);


}

public void onClick (View view){
    switch (view.getId()){
        case R.id.btn1: {
            Intent intent  = new Intent(Cat.this,Congratulations.class);
            startActivity(intent);
            break;
        }
        case R.id.btn2: {
           animalButtonClicked(btn2,turnsLeft);
            break;
        }
        case R.id.btn3: {
            animalButtonClicked(btn3,turnsLeft);
            break;
        }
        case R.id.btn4: {
            animalButtonClicked(btn4,turnsLeft);
            break;
        }
        default:{
            break;
        }
    }
}

private int animalButtonClicked(Button button, int count){
    button.setEnabled(false);
    count++;


    if(count == 3){
        count = 0;
        finish();
    }
    button.setEnabled(false);
    return count;
}

1 ответ

  1. Вы передаете методу глобальную переменную turnleft. Но приращение только локальной переменной «count». Он не влияет на глобальную переменную. Таким образом, turnleft всегда равен 0.

    изменить код, как это для всех кнопок нажмите,

    animalButtonClicked(btn2, ++turnsLeft);
    

    и удалите строку count++из метода.

    Другое решение — вовсе не передавать методу глобальную переменную «turnleft». Поскольку это глобальная переменная, вы можете получить доступ к переменной turnleft непосредственно внутри метода, вместо использования локальной переменной «count».