2016-02-27 90 views
0

當我試圖在按鈕中添加Start和Cancel時,出現此錯誤。 我看着計時器的文件,但我沒有看到任何 「錯誤:非靜態方法start()方法不能從靜態上下文中引用」非靜態方法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(); 

      } 
     } 
    }); 


    } 


} 

回答

0

您需要創建的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(); 
      } 
     } 
    }); 
} 
+0

當地varriable定時器從內部類訪問;需要最終刪除 – Thorin

+0

非常感謝你 – Thorin

0

您需要創建CountDownTimer的實例,像這樣:然後

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

,在onclick方法:

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

} 
+0

錯誤:(55,21)錯誤:局部變量t從內部類中訪問;需要被宣佈爲最終 – Thorin

相關問題