我试图在我的应用中实现一个计数器,每次单击该按钮时都会增加。然后,我想拿出计数器的最终值,并将其显示在对话框中。
问题在于,当我调用变量时,它会返回它最初具有的值,而不是onClick方法修改的值(这很奇怪,但我在代码中注释了我的意思)。 / p>
final TextView points = (TextView) findViewById(R.id.points);
points.setText("Points = 0");
class ButtonClick implements View.OnClickListener {
int value = 0;
public void onClick(View v) {
value++;
changeLocation(theButton);
points.setText("Points = " + value); // This value increases
}
public int getValue() {
return value;
} // This returns 0.
}
final ButtonClick buttonClicked = new ButtonClick();
theButton.setOnClickListener(buttonClicked);
final int finalValue = buttonClicked.getValue(); // This still equals zero.
答案 0 :(得分:1)
代码逐行同步执行:
$('#deleteAll').trigger('submit', function (e){
....
});
当您点击第3行时,您将获得值0,因为值为零。
尝试点击(执行点击 - >执行事件或任何事情)然后获取价值。
要查看它是否有效,您需要第二个异步方法示例:
// define and instantiate button listener
1) final ButtonClick buttonClicked = new ButtonClick();
// attach listener to button
2) theButton.setOnClickListener(buttonClicked);
<------ here you still didn't executed onClick :)
// trying get value
3) final int finalValue = buttonClicked.getValue(); // This still equals zero.
答案 1 :(得分:0)
我可以看到几个问题, 1)onClick不是重写方法,所以尝试@Override注释,如下所示:
@Override
public void onClick(View v) { ... }
2)当必须使用变量时,尝试在类级别使用getter和setter在类级别声明它。
希望这些提示有所帮助。