作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的应用程序中实现一个计数器,每次单击按钮时该计数器都会增加。然后我想获取计数器的最终值并将其显示在对话框中。
问题是,当我调用该变量时,它返回它最初具有的值,而不是由 onClick 方法修改的值(这解释起来很奇怪,但我在代码中注释以显示我的意思)。
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.
最佳答案
代码逐行同步执行:
// 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.
当您到达第 3 行时,您将获得值 0,因为值为零。
尝试点击(执行点击 -> 执行事件或任何其他操作)然后获取值。
要查看它是否有效,您需要第二个异步方法示例:
new Thread(new Runnable() {
@Override
public void run() {
while(buttonClicked.getValue() ==0) {
// you didn't click
Thread.sleep(10000);
}
};
}).start();
关于java - 有没有办法通过引用将成员函数传递到方法中? [JAVA],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982022/
我是一名优秀的程序员,十分优秀!