2016-07-23 9 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

アンドロイドにはすでに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

関連する問題