我如何使用的是Android View的onClickListener非最终变量? [英] How do I use a non-final variable in a Android View's onClickListener?

查看:119
本文介绍了我如何使用的是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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆