我如何使用的是Android View的onClickListener非最终变量? [英] How do I use a non-final variable in a Android View's onClickListener?
本文介绍了我如何使用的是Android View的onClickListener非最终变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一些问题,我的一些code的。 Basiclly,这是一个倒计时程序,但每当被点击一个按钮,就应该刷新倒计时。
我希望是有道理的。下面是我的一些code,但是,按预期它不工作。
I got some problems with some of my code. Basiclly, it's a countdown program, but whenever a button is clicked, it should refresh the countdown. I hope that makes sense. Below is some of my code, however, it's not working as intended.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView mTextField = (TextView) findViewById(R.id.mTextField);
final Button refresh = (Button) findViewById(R.id.button1);
final int j = 30000;
int i = j;
refresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
j = 30000;
}
});
new CountDownTimer(i, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
}
我的问题是,我需要做一个最终的变量访问它在onClickListener,但一旦它最后我不能改变它。
在此先感谢
My problem is, that I need to make a variable final to access it in a onClickListener, but I can't change it once it's final.
Thanks in advance
推荐答案
请J A场变量,不让它最终,这将解决您的问题。
Make j a field variable and don't make it final, that will solve your problem
public class MainActivity extends Activity {
int j;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView mTextField = (TextView) findViewById(R.id.mTextField);
final Button refresh = (Button) findViewById(R.id.button1);
j = 3000;
int i = j;
refresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
j = 30000;
}
});
new CountDownTimer(i, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
}
这篇关于我如何使用的是Android View的onClickListener非最终变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文