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

标签 android

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

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/

相关文章:

android - Linux perf stat 工具返回零指令计数。我在这里错过了什么?

Android Lollipop Wifi 套接字 java.net.ConnectException ETIMEDOUT

android - Cordova Android Camera-给出非法参数异常

java - 在两台计算机上测试 Android 应用程序时结果截然不同

Android自定义图库 View ,设置自己的边框

android - 我无法启动 Android studio 应用程序,似乎解决了错误

android 在 View 删除时回收 View 中的所有位图

android - 奇怪的 Intent 过滤器 pathPattern 行为

java - 上传图片后在 Firebase 中如何获取 Url?

android - 如何让 Eclipse 识别 R 和 Android 的 Lunar Lander 中的资源?