ちょっと私はプログラミングで、特にjavaとxmlで新しいです。プログレスバーにタスクが残す時間を表示するゲームを作りたいのですが、Android Studioはi ++とmProgressBar.setProgress(i)を使うために最終変数を宣言する必要があると言っています。内部のクラスのためです。しかし、私が知る限り、最終的な変数はその価値を変えることはできません。コードを再び動作させるために私は何を変えるべきですか?Android Studioは、最終的な変数を宣言する必要があると言っています。
@Override
public void onResume() {
super.onResume();
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
final ImageView ball = (ImageView) findViewById(R.id.ball);
ball.setOnTouchListener(new View.OnTouchListener()
{
PointF DownPT = new PointF(); // Record Finger Position When Pressed Down
PointF StartPT = new PointF(); // Record Start Position of 'ball'
@Override
public boolean onTouch(View v, MotionEvent event)
{
int eid = event.getAction();
switch (eid)
{
case MotionEvent.ACTION_MOVE :
PointF mv = new PointF(event.getX() - DownPT.x, event.getY() - DownPT.y);
ball.setX((int)(StartPT.x+mv.x));
ball.setY((int)(StartPT.y+mv.y));
StartPT = new PointF(ball.getX(), ball.getY());
break;
case MotionEvent.ACTION_DOWN :
DownPT.x = event.getX();
DownPT.y = event.getY();
StartPT = new PointF(ball.getX(), ball.getY());
break;
case MotionEvent.ACTION_UP :
// Nothing have to do
break;
default :
break;
}
return true;
}
});
ProgressBar mProgressBar;
CountDownTimer mCountDownTimer;
int i=0;
mProgressBar=(ProgressBar)findViewById(R.id.progressBartime);
mProgressBar.setProgress(i);
mCountDownTimer=new CountDownTimer(3000,1000) {
@Override
public void onTick(long millisUntilFinished) {
Log.v("Log_tag", "Tick of Progress"+ i+ millisUntilFinished); //i needs to be declared as final
i++; //i needs to be declared as final
mProgressBar.setProgress(i); //mProgressBar needs to be declared as final
}
@Override
public void onFinish() {
//Do what you want
i++; //i needs to be declared as final
mProgressBar.setProgress(i); //mProgressBar needs to be declared as final
}
};
mCountDownTimer.start();
}
}
あなたはprogressBarではなくiに対処しました –
はい、あなたは正しいです!回答 – Ryan
を修正しました。内部クラスは、ローカル変数***にアクセスできませんでした。これは、囲むクラスのインスタンス変数と静的変数にアクセスできます。 –