2016-09-07 7 views
0

私は毎回、イメージボタンを移動して変更するボタンを持っています。そして、5回ごとに、コマンドをアクティブにします。 5秒経過するとタイムアウトしてボタンを消させようとしています。私はハンドラの例(Timeout detection for eventlisteners in Android)で試してきましたが、コードを置く場所を正確に把握することはできません。java - onclicklistenerタイムアウト?

public void addListenerOnButton() { 
imageButton = (ImageButton) findViewById(R.id.imageButton1); 
imageButton.setOnClickListener(new OnClickListener() { 
    int i=0; 
    @Override 
    public void onClick(View arg0) { 
     i+=1; 
     //Move position 
     Random r = new Random(); 
     int buttonHeight; 
     int buttonWidth; 
     int xPos = r.nextInt(480); 
     int yPos = r.nextInt(800); 
     imageButton.setX(xPos); 
     imageButton.setY(yPos); 

     //Change image 
     int[] imageIds = { 
       R.drawable.pic1, 
       R.drawable.pic2, 
       R.drawable.pic3, 
       R.drawable.pic4, 
       R.drawable.pic5, 
       R.drawable.pic6, 
       R.drawable.pic7, 
       R.drawable.pic8, 
       R.drawable.pic9, 
       R.drawable.pic10 

     }; 
     int randomImageId = imageIds[r.nextInt(imageIds.length)]; 
     imageButton.setImageResource(randomImageId); 
     if(i==5){ 
      Toast offMsg = Toast.makeText(getBaseContext(), 
        "This is the fifth button press", Toast.LENGTH_SHORT); 
      offMsg.show(); 
      int i=0; 
     } 
    } 
}); 
} 
+0

タイムアウト後何? – earthw0rmjim

+0

ボタンが見えるときと、時間が始まるときと終わるときを明確に説明しますか? –

答えて

0

あなたはこのようにできます。

final Button button = findViewById(R.id.button); 

final Runnable runnable = new Runnable() { 
    @Override public void run() { 
    // Replace with your logic. 
    button.setOnClickListener(null); 
    } 
}; 

button.setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(final View view) { 
    //Removing 5 Seconds timer which will remove click listener. 
    view.removeCallbacks(runnable); 
    } 
}); 

//Removed Click Listener after 5 Seconds. 
button.postDelayed(runnable, 5000); 

Runnableを作成し、run方法であなたのロジックを追加します。 タイマを起動したいときはいつでも、postDelayed(Runnable runnable, long delay)ファンクションスタートタイマを使います。時間を取り除くには、removeCallbacks(Runnable runnable)に電話して、同じ実行可能ファイルを渡してください。これはタイマーを削除します。