gpt4 book ai didi

android - OnClickListener 重新分配问题 - Android

转载 作者:行者123 更新时间:2023-11-30 04:38:29 25 4
gpt4 key购买 nike

当我尝试重新分配 OnClickListener 时遇到问题。在下面的代码中,我的程序通过 startWorkout() 方法运行,每次单击按钮时,它都会计算这是否是最后一次运行。如果它是最后一次运行,它会调用 lastSet() 方法。 lastSet() 方法应该重新分配按钮,以便它执行不同的操作,但每次我单击它时,它都会执行 startWorkout() 方法中声明的内容。

当我通过 Debug模式运行它时,单步执行,程序正确地通过了 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

}
});
}

最佳答案

解决了...我实际上分配了两次监听器...(很久以前解决了,只是清理我的 stackoverflow 问题)

如果你这样做:

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);
}
});

然后是:

doneButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

runMethod2();
}
});

然后只有第二个(在本例中为 runMethod2())会运行。菜鸟错误,一定要删除(或覆盖)任何遗留代码。

关于android - OnClickListener 重新分配问题 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6429859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com