簡體   English   中英

非靜態方法start()不能從靜態上下文中引用

[英]non-static method start() cannot be referenced from a static context

當我嘗試在按鈕中添加“開始”和“取消”時,出現此錯誤。 我查看了Timer文件,但沒有看到任何“錯誤:無法從靜態上下文引用非靜態方法start()”

public int number;

public TextView textfield;

Button buton;

int x = 1;

Boolean y = false;



@Override

 protected void onCreate(Bundle savedInstanceState){



    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_reading);

    new CountDownTimer(100000, 1000) {

        public void onTick(long millisUntilFinished) {

            textfield.setText("Time: " + millisUntilFinished / 1000);
        }

        public void onFinish() {
            textfield.setText("Time is up");
        }
    }.start();

    textfield=(TextView)findViewById(R.id.Zamanlayici);

    buton=(Button)findViewById(R.id.Click);

    buton.setOnClickListener(new View.OnClickListener() {
        @Override
         public void onClick(View v) {


           //My Error is in there :(
          if (y) {
                CountDownTimer.start();
                y= true;
            }
            else {
                y = false;
                CountDownTimer.cancel();

            }
        }
    });


    }


}

您需要創建一個CountDownTimer實例以從中調用非靜態方法。

CountDownTimer timer = new CountDownTimer();
timer.start();

將您的代碼更改為此

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_reading);
    CountDownTimer timer = new CountDownTimer(100000, 1000) {
        public void onTick(long millisUntilFinished) {
            textfield.setText("Time: " + millisUntilFinished / 1000);
        }
        public void onFinish() {
            textfield.setText("Time is up");
        }
    }
    timer.start();

    textfield=(TextView)findViewById(R.id.Zamanlayici);
    buton=(Button)findViewById(R.id.Click);
    buton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (y) {
                timer.start();
                y= true;
            }
            else {
                y = false;
                timer.cancel();
            }
        }
    });
}

您正在嘗試使用非靜態方法,例如靜態方法。 嘗試創建一個變量來存儲CountDownTimer實例並在其上調用方法。 也是doc: http : //developer.android.com/reference/android/os/CountDownTimer.html

您需要創建一個CountDownTimer實例,如下所示:

CountDownTimer timer = new CountDownTimer(100000, 1000){...}

然后,在onClick方法中:

if (y) {
   timer.start();
   y= true;
}
else {
   y = false;
   timer.cancel();

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM