2016-02-27 2 views
0

Когда я пытаюсь добавить кнопку «Пуск» и «Отмена», я получаю эту ошибку. Я посмотрел в файлы таймер, но я не видел ничего «ошибка: не статический старт() метод не может ссылаться из статического контекста»Нестатический метод 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

Смежные вопросы