"Ansicht aktualisieren", bei runtime in Android

Das Beispiel ist ziemlich einfach: ich will, damit der Benutzer wissen über das, was die app macht, indem Sie nur mit einem text (canvas.drawText()). Dann, meine erste Nachricht wird angezeigt, aber nicht die anderen. Ich meine, ich habe ein "setText" Methode aber es funktioniert nicht für updates.

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");
}

Ansicht-text-Zeichnung-arbeiten mit einem drawText in onDraw();, also setText ändert den text zeigt es aber nicht.

Jemand mich empfohlen ersetzt anzeigen mit einer SurfaceView, aber es würde viel Mühe, nur für ein paar updates, ALSO... wie zum Teufel kann ich die Ansicht aktualisieren dinamically zur Laufzeit?

Sollte es Recht einfach sein, nur mit einem text für 2 Sekunden zu sagen, und dann den main thread zu tun, seine Sachen und dann die Aktualisierung der text...

Dank!

Update:

Habe ich versucht umzusetzen-handler.onPost(), aber es ist die gleiche Geschichte über und über wieder. Lassen Sie mich setzen Sie den 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");
}       
}

Und:

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(); 
        }                   
    });
}
}

Obwohl splash ist im anderen thread, habe ich einen Schlaf auf dem Haupt-thread, ich benutze den handler zu verwalten UI und alles, es nicht verpasst eine Sache, es zeigt nur das Letzte update.

InformationsquelleAutor ferostar | 2010-12-21

Schreibe einen Kommentar