2017-04-12 20 views
0

我有一個定時器,按一下按鈕就以特定的速度播放聲音(500毫秒)。取消後創建一個新的定時器

final Timer timer = new Timer("Timer", true); 

final TimerTask tone = new TimerTask(){ 
    @Override 
    public void run(){ 
     sound1.start(); 
    } 
}; 

Button go = (Button)findViewById(R.id.buttonGo); 

go.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     timer.scheduleAtFixedRate(tone, 500, 500); 
    } 
}); 

我還有一個按鈕,停止正在播放該定時器和理論創建另一個計時器,以便它可以再次發揮。

Button stop = (Button)findViewById(R.id.buttonStop); 

stop.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     timer.cancel(); 
     final Timer timer = new Timer("Timer", true); 
    } 
}); 

按下停止按鈕後,計時器停止成功,但我不能再次發揮它,它的應用程序崩潰。有誰知道解決方案?

回答

0

問題在於可變定時器的範圍。它在onClick()中聲明,你可能試圖從外部訪問它。

相關問題