私はボタンがクリックされるたびに増加する私のアプリでカウンタを実装しようとしている。私は、カウンタの最終的な価値が何であれ、それを取ってダイアログに表示させたいと思っています。メンバ関数を参照によってメソッドに渡す方法はありますか? [JAVA]
問題は、変数を呼び出すと、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.
。 – shmosel
Re、 "//これはまだゼロと等しいです。" _When_それはまだゼロと等しいですか?あなたのプログラムは文字通りいくつかの方法で最後の3行を実行しますか?つまり、新しいButtonClickオブジェクトを作成して登録し、すぐにその値を取得しますか?その場合、もちろんその値はゼロです!ボタンをクリックする時間はユーザーに与えられていません。 –
@ jameslarge私はとても愚かです。あなたのコメントは正しい答えに私を得たものです!あまりに早くgetValue関数を呼び出しました。 (まだJava /最初のアプリの新機能)。 –