0

onbackpressed で countdowntimer をキャンセルしようとしています。しかし、「'count' を解決できません」というエラーが表示されます。カウントダウンタイマーが見つからないと思います!タイマーをキャンセルできる btn_riazi1_1_1 があります。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_riazi1_1);


    //// handling timer
    final TextView textic = (TextView) findViewById(R.id.riazi1_1_timer);

    final CountDownTimer Count = new CountDownTimer(5000, 1000) {
        public void onTick(long millisUntilFinished) {

            textic.setText(getResources().getString(R.string.remaintime) + millisUntilFinished / 1000);
        }



        public void onFinish() {
            textic.setText(getResources().getString(R.string.timesup));
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {



                    Intent i=new Intent(Riazi1_1.this,Riazi1_2.class);

                    startActivity(i);
                }
            }, 1000);

        }
    };

    Count.start();
    /////////////////


    //// handling button1
    Button btn1 = (Button) findViewById(R.id.btn_riazi1_1_1);
    btn1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Count.cancel();

            TextView txtwrong = (TextView) findViewById(R.id.txt_wrong_riazi1_1);
            txtwrong.setVisibility(View.VISIBLE);

            Button btn2 = (Button) findViewById(R.id.btn_riazi1_1_2);
            btn2.setBackgroundColor(Color.GREEN);


            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {



                    Intent i=new Intent(Riazi1_1.this,Riazi1_2.class);

                    startActivity(i);
                }
            }, 1000);



        }
    });

 }

 @Override
public void onBackPressed(){

    super.onBackPressed();
    Count.cancel();     //   error:  Count cannot be resolved ///

}
 }
4

1 に答える 1

1

onCreate メソッド内で TIMEr を宣言しました。そのため、onCreate 以外からアクセスすることはできません。メンバー変数として宣言します。

private CountDownTimer Count; /// declare it as a member variable

そしてonCreateメソッドで次のように初期化します

Count = new CountDownTimer(5000, 1000).....

[提案、命名規則を使用してください。大文字で始まる変数に名前を付けるのは本当に混乱します]

于 2013-06-29T08:04:09.357 に答える