有没有办法通过引用将成员函数传递给方法? [JAVA]

时间:2016-08-16 18:27:33

标签: java android

我试图在我的应用中实现一个计数器,每次单击该按钮时都会增加。然后,我想拿出计数器的最终值,并将其显示在对话框中。

问题在于,当我调用变量时,它会返回它最初具有的值,而不是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.

2 个答案:

答案 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在类级别声明它。

希望这些提示有所帮助。