我在嘗試重新分配OnClickListener時遇到問題。在下面的代碼中,我的程序運行startWorkout()方法,每次單擊按鈕時,它會計算這是否是最後一次運行。如果它是最後一次運行,它會調用lastSet()方法。 lastSet()方法應該重新設置按鈕,以便它執行不同的操作,但每次單擊它時,都會執行startWorkout()方法中聲明的內容。OnClickListener重新分配問題 - Android
當我通過調試模式運行它時,程序正確地通過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
}
});
}
我沒有看到startWorkout()在任何地方調用lastSet()。另外,請提供saveResult()和setLayoutTest()的詳細信息。 – f20k
是的,我把這些東西剪掉以使它更簡單。我想我發現了這個問題。 – easycheese