gpt4 book ai didi

android - 如何在 Android View 的 onClickListener 中使用非最终变量?

转载 作者:太空狗 更新时间:2023-10-29 15:42:06 26 4
gpt4 key购买 nike

我的一些代码遇到了一些问题。基本上,这是一个倒计时程序,但只要单击一个按钮,它就应该刷新倒计时。我希望这是有道理的。下面是我的一些代码,但是,它没有按预期工作。

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();
}

我的问题是,我需要将变量设置为 final 才能在 onClickListener 中访问它,但一旦它成为 final,我就无法更改它。

提前致谢

最佳答案

让 j 成为一个字段变量并且不要让它成为最终变量,这将解决你的问题

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 - 如何在 Android View 的 onClickListener 中使用非最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17553780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com