2010-08-12 6 views
1

avoir un problème à essayer de comprendre comment utiliser une minuterie dans Android. J'ai une activité qui configure un timerTask dans ma méthode onCreate. J'appelle la tâche sur un clic de bouton et tout ce qu'il est censé faire est d'ajouter un textview. Le problème est que j'obtiens un NullPointerException à timer.schedule(task, TIMER_DELAY, 3*TIMER_ONE_SECOND);comment utiliser une minuterie android

Y at-il une raison évidente pour cela que je suis manquant?

public class UseGps extends Activity 
{ 

    Button gps_button; 
    TextView gps_text; 
    LocationManager mlocManager; 
    TimerTask task; 
    Timer timer; 
    public final int TIMER_DELAY = 1000; 
    public final int TIMER_ONE_MINUTE = 60000; 
    public final int TIMER_ONE_SECOND = 1000; 

public void onCreate(Bundle savedInstanceState) 

     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      gps_button = (Button) findViewById(R.id.Button); 
      gps_text = (TextView) findViewById(R.id.Text); 

      task = new TimerTask() {    
       @Override 
       public void run() { 
        gps_text.append("Time up "); 
        try { 
         this.wait(TIMER_DELAY); 
        } 
        catch (InterruptedException e){ 
        } 
       } 

      }; 

      /* Use the LocationManager class to obtain GPS locations */ 

      double gps[] = getLastKnownGPS(); 
      gps_text.setText("Last known Location = "+gps[0]+" "+gps[1]); 


      gps_button.setOnClickListener(new OnClickListener() { 
       public void onClick(View viewParam){ 
        gps_text.append("\n\nSearching for current location. Please hold..."); 
        gps_button.setEnabled(false); 
        mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
        LocationListener mlocListener = new MyLocationListener(); 
        mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 

        timer.schedule(task, TIMER_DELAY, 3*TIMER_ONE_SECOND); 

       } 
      }); 

     } 
} 

Merci à l'avance

Kevin

+0

Vous allouez jamais une minuterie. – Asahi

+0

désolé, pas sûr de ce que vous voulez dire, pouvez-vous développer? merci –

+0

Bien sûr. Dans votre extrait de code, vous avez une référence: Minuteur; Ne jamais allouer une instance en appelant timer = new Timer(); S'il vous plaît voir l'exemple pour plus de détails – Asahi

Répondre

2

Voici un example - mort maintenant.

Answered here

+0

C'est vraiment bizarre, je venais juste de trouver cet exemple dans google et l'ai fait fonctionner pour moi, alors j'accepte votre réponse comme celle qui fonctionne. Merci –

+0

@asahi lien mort ?? –

+0

Le lien est mort. S'il vous plaît se référer à cette question - http://stackoverflow.com/questions/4597690/android-timer-how – Asahi