1. K.Raul, 23.05.2012 #1
    K.Raul

    K.Raul Threadstarter Neuer Benutzer

    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    = (EditTextthis.findViewById(R.id.ausgabe);
            
            
    t= new Timer();
            
    t.schedule(new Zeitgeber(), 03*1000);
        }
    }

    class 
    Zeitgeber extends TimerTask{
          public 
    void run(){
              
    int wert Integer.valueOfTimerTestActivity.ausgabe.getText().toString() ) +1;
              
    TimerTestActivity.ausgabe.setText(wert);
          }
        }
     
  2. Unicate, 24.05.2012 #2
    Unicate

    Unicate Android-Experte

    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?
     
  3. keinbrain, 24.05.2012 #3
    keinbrain

    keinbrain Fortgeschrittenes Mitglied

    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 :)
     
  4. Unicate, 24.05.2012 #4
    Unicate

    Unicate Android-Experte

    Stimmt, die Aktualisierung des EditText-Feldes sollte noch synchronisiert werden.

    PHP:
    class Zeitgeber extends TimerTask
          public 
    void run(){ 
              
    int wert Integer.valueOfTimerTestActivity.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: 25.05.2012
  5. keinbrain, 24.05.2012 #5
    keinbrain

    keinbrain Fortgeschrittenes Mitglied

    Gut da unicate ja jetzt ein beispiel gepostet hat brauch ich ja nicht mehr ^^
     
  6. K.Raul, 24.05.2012 #6
    K.Raul

    K.Raul Threadstarter Neuer Benutzer

    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.
     
  7. Unicate, 25.05.2012 #7
    Unicate

    Unicate Android-Experte

    Ja, da darf natürlich kein void in der Zeile stehen.

    Hab das mal eben korrigiert.