3

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

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 中访问它,但是一旦它是最终的,我就无法更改它。

提前致谢

4

2 回答 2

10

使 ja 字段变量并且不要使其成为最终的,这将解决您的问题

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

}

于 2013-07-09T16:51:36.267 回答
2

你可以做的就是创建j一个成员变量,然后你可以在类的任何地方使用它

public class MainActivity extends Activity {
    int j = 3000;  // declare it here as a member variable
@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

于 2013-07-09T16:51:31.667 回答