Timerproblem ...

K

K.Raul

Neues Mitglied
0
Hallo zusammen,
ich versuche ein kleines Testprogramm mit einen Timer zu schreiben.
Leider sind die paar Zeilen schon zu viel für mich.
Der Bildschirm bleibt schwarz, es wird nicht mal das Editierfeld angezeigt.

Kann mir jemand einen Hinweis geben was ich falsch mache, danke?

Funktion des Programms :
eine Zahl soll in einem Editierfeld alle 3 Sek. um 1 erhöht werden.

Code :
PHP:
package de.Timertest;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;

public class TimerTestActivity extends Activity {
	public Timer t;
	public static EditText ausgabe;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ausgabe	= (EditText) this.findViewById(R.id.ausgabe);
        
        t= new Timer();
        t.schedule(new Zeitgeber(), 0, 3*1000);
    }
}

class Zeitgeber extends TimerTask{
	  public void run(){
		  int wert = Integer.valueOf( TimerTestActivity.ausgabe.getText().toString() ) +1;
		  TimerTestActivity.ausgabe.setText(wert);
	  }
	}
 
Wenn das Editierfeld nicht angezeigt wird, dann hast du es evtl in der xml auf visibility="gone" gesetzt?
Oder das passiert mir manchmal, wenn ich statt vertical horizontale Orientation eingestellt hatte.
Wird es in der xml ansicht angezeigt?
 
Ums kurz zu machen, der timer thread kann nicht auf den ui thread zugreifen, versuchs mal mit nem handler. Bin z Zt. nur mit dem ipod im internet, wenn du willst poste ich heute abend ein codebeispiel :)
 
Stimmt, die Aktualisierung des EditText-Feldes sollte noch synchronisiert werden.

PHP:
class Zeitgeber extends TimerTask{ 
      public void run(){ 
          int wert = Integer.valueOf( TimerTestActivity.ausgabe.getText().toString() ) +1; 
          Message msg = Message.obtain();
          msg.arg1 = wert;
          _synchronizer.sendMessage(msg);
      } 
    }  
private Handler _synchronizer = new Handler() {
    public void handleMessage(Message msg) {
          // "" ist wichtig, damit der text nicht faelschlicherweise als res interpretiert wird.
          TimerTestActivity.ausgabe.setText(""+msg.arg1);
    }
};
 
Zuletzt bearbeitet:
Gut da unicate ja jetzt ein beispiel gepostet hat brauch ich ja nicht mehr ^^
 
Danke für die Antworten.

Leider bekomme ich bei der Zeile private void Handler _synchronizer = new Handler() { Fehler angezeigt.

Ich werde am WE versuchen den Fehler genauer einzukreisen.
 
Ja, da darf natürlich kein void in der Zeile stehen.

Hab das mal eben korrigiert.
 
Zurück
Oben Unten