Я сталкиваюсь с проблемой при попытке переназначения OnClickListener.В приведенном ниже коде моя программа запускается методом startWorkout (), и каждый раз, когда нажимается кнопка, она вычисляет, является ли это последним выполнением или нет.Если это последний прогон, он вызывает метод lastSet ().Метод lastSet () должен переназначить кнопку, чтобы она выполняла другое действие, но каждый раз, когда я нажимаю на нее, она выполняет действия, объявленные в методе startWorkout ().
Когда я запускаю ее в режиме отладкипошагово, программа правильно прошла метод lastSet () и назначила слушателя.Но затем он вернулся к методу startWorkout () и переназначил слушателя!Таким образом, к тому времени, когда пользователь нажал на нее, кнопка вернулась к своему первоначальному слушателю, а не к окончательному.
Кто-нибудь знает, почему это происходит?
public void startWorkout() {
doSet();
Button doneButton = (Button)findViewById(R.id.done);
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// If this is the last result, calls last(set) instead
saveResult();
takeRest(61000, 30000);
}
});
}
public void lastSet() {
// Changes layout (keeps the same button)
setLayoutTest();
Button doneButton = (Button)findViewById(R.id.done);
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Call Finish Methods
}
});
}