2016-07-23 109 views
2

StartTimer()函數應在按鈕點擊事件完成後調用,但在onclick事件之前執行。 ro如何在onclick事件之前停止計時器並在onclick事件之後啓動。StartTimer()應在按鈕點擊事件完成後調用,但在onclick事件之前執行

我該如何解決這個問題?

 btn1=(Button)findViewById(R.id.button); 
     btn2=(Button)findViewById(R.id.button2); 
     btn3=(Button)findViewById(R.id.button3); 
     timer = new Timer(); 

     btn1.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) { 
       timer.cancel(); 
       Toast.makeText(getApplicationContext(), "Button1", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     StartTimer(); 

     btn2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       timer.cancel(); 
       Toast.makeText(getApplicationContext(), "Button2", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     StartTimer(); 

     btn3.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       timer.cancel(); 
       Toast.makeText(getApplicationContext(), "Button3", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 

    public void StartTimer() 
    { 
     timer = new Timer(); 
     timer.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
       Log.v("timer", "Timer running"); 
      } 
     }, 0, 5000); 

     Toast.makeText(getApplicationContext(), "Timer", Toast.LENGTH_LONG).show(); 
    } 

    protected void onResume() { 
     super.onResume(); 
     StartTimer(); 
    } 
} 

回答

0

在android中已經建立了Timer類。所以,你可以做這樣的:

import java.util.Timer; 

    Timer timer = new Timer(); 

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

     timer.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       Log.v("timer", "Timer running"); 
       Toast.makeText(getApplicationContext(), "TIMER HAS FINISHED", Toast.LENGTH_SHORT).show(); 
      } 
     }, 0, 5000); 

     btn1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       timer.cancel(); 
       Toast.makeText(getApplicationContext(), "Button1", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     StartTimer(); 

     btn2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       timer.cancel(); 
       Toast.makeText(getApplicationContext(), "Button2", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     btn3.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       timer.cancel(); 
       Toast.makeText(getApplicationContext(), "Button3", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

所以纔在onCreate啓動定時器,並停止它時,按鈕點擊。

+0

謝謝Mr.Driver – Aruna

+0

@Aruna你在我的暱稱中犯了2個錯誤 – Divers

+0

對不起,我沒有注意到它。 – Aruna

相關問題