Mettre à jour la Vue lors de l'exécution Android

L'exemple est assez simple: je veux laisser l'utilisateur de savoir à propos de ce que fait l'application sur simple présentation d'un texte (de la toile.drawText()). Ensuite, mon premier message s'affiche, mais pas pour les autres. Je veux dire, j'ai un "setText" méthode, mais elle n'a pas les mises à jour.

onCreate(Bundle bundle) {
    super.onCreate(bundle);
    setContentView(splash); //splash is the view class
    loadResources();
    splash.setText("this");
    boundWebService();
    splash.setText("that"):
    etc();
    splash.setText("so on");
}

Le point de vue du texte de dessin fonctionne en faisant juste un drawText dans onDraw();, de sorte setText modifications au texte, mais ne le montrent pas.

Quelqu'un m'a recommandé de remplacer la vue avec une SurfaceView, mais il serait beaucoup de problèmes pour juste un couple de mises à jour, DONC... comment diable puis-je mettre à jour la vue dinamically au moment de l'exécution?

Il devrait être assez simple, il suffit de montrer un texte pour dire 2 secondes, puis le thread principal de faire son truc et puis mise à jour du texte...

Merci!

Mise à jour:

J'ai essayé la mise en œuvre de gestionnaire.onPost(), mais c'est la même histoire une fois de plus. Permettez-moi de vous mettre le code:

public class ThreadViewTestActivity extends Activity {

Thread t;
Splash splash;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    splash = new Splash(this);
    t = new Thread(splash);
    t.start();

    splash.setTextow("OA");
    try { Thread.sleep(4000); } catch (InterruptedException e) { }
    splash.setTextow("LALA");
}       
}

Et:

public class Splash implements Runnable {

Activity activity;
final Handler myHandler = new Handler();

public Splash(Activity activity) {
    this.activity=activity;
}   

@Override
public void run() {
    //TODO Auto-generated method stub

}

public synchronized void setTextow(final String textow) {
    //Wrap DownloadTask into another Runnable to track the statistics
    myHandler.post(new Runnable() {
        @Override
        public void run() {
            TextView t = (TextView)activity.findViewById(R.id.testo);
            t.setText(textow);
            t.invalidate(); 
        }                   
    });
}
}

Bien que splash est dans l'autre thread, j'ai mis un profond sommeil sur le thread principal, j'utilise le gestionnaire pour gérer l'INTERFACE utilisateur et tout, il ne change plus d'une chose, il n'affiche que la dernière mise à jour.

OriginalL'auteur ferostar | 2010-12-21