2014-01-09 2 views
1

이 내 코드입니다 :Timer를 메서드로 호출하려면 어떻게해야합니까?

내가 다시 타이머를 내가 버튼을 클릭하면 타이머를 중지 한 다음 다시 시작 할 수 있도록하려면
package com.example.wackamole; 

import java.util.Timer; 
import java.util.TimerTask; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ImageButton; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

static int scoreCount; 
static Timer t; 
static int count; 
static int timeInterval; 

    protected TextView textView, counter; 
    protected ImageButton button; 

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

    t = new Timer(); 

    scoreCount = 0; 
    count = 0; 
    timeInterval = 1000; 

    button = (ImageButton)findViewById(R.id.mole); 
    button.setBackgroundDrawable(null); 
    textView = (TextView)findViewById(R.id.score); 

    t.scheduleAtFixedRate(new TimerTask(){ 

    @Override 
    public void run() { 
     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       if (count%2 == 0) 
        button.setImageResource(R.drawable.mole); 
       else 
        button.setImageResource(R.drawable.hole); 

       count++; 
       textView.setText("Score:" + count); 


      } 

     }); 

    } 
},0, timeInterval); 

    findViewById(R.id.mole).setOnClickListener(new View.OnClickListener() { 
      public void onClick (View v){ 


       if (timeInterval > 100) 
        timeInterval -= 50; 


       if (t != null){ 
        t.cancel(); 
        t.purge(); 
        t = null; 
       } 
      } 
      }); 

    } 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

(더 빨리 할 수 ​​있도록이 시간, 타이머 간격이 작다) . onCreate()와 같은 것입니까? 또는 onResume? 그렇다면 누군가가 그 사실을 나에게 설명 할 수 있습니까?

+0

을 나는 문제가 무엇인지 확실히 모르겠어요. 질문을 명확하게 할 수 있습니까? – hichris123

답변

1

나는 당신을 이해하는 경우, 당신은 버튼을 누르면 취소되고 재설정됩니다 하나의 타이머를 만들려고합니다. 그렇다면이 방법이 도움이 될 것입니다. 의

밖에서에서 onCreate 당신이 타이머의 취소와 창조 처리하는 방법을 만들 수 있습니다

private void setupTimer() { 
    t.cancel(); 
    t.schedule(new TimerTask() { 

     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        if (count % 2 == 0) 
         button.setImageResource(R.drawable.mole); 
        else 
         button.setImageResource(R.drawable.hole); 

        count++; 
        textView.setText("Score:" + count); 
       } 
      }); 
     } 
    }, timeInterval); 
} 

Timer.schedule (가) 필요에 맞게 듯합니다. Timer가 제공하는 여러 가지 방법에 대한 자세한 내용은 http://developer.android.com/reference/java/util/Timer.html

Timer.scheduleAtFixedRate()가 주어진 간격으로 계속해서 발생합니다. 간격의 비율은 고정되어 있으며 각 단추를 누를 때마다 타이머 간격을 줄이기 위해 필요하지 않습니다.

이제 내부 사용자에서 onCreate 사용자가 버튼을 클릭하면이 새로운 방법을 호출 할 수 있습니다

findViewById(R.id.mole).setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      if (timeInterval > 100) 
       timeInterval -= 50; 

      setupTimer(); 
    } 
}); 

S

+1

답변 해 주셔서 감사합니다. – Lightgod131

+0

문제 없습니다. 다행스럽게 도울 수있어! –

관련 문제