Ich bin sehr neu in Android-Programmierung, so bitte verzeihen Sie meine Noobie-Ness. Ich versuche, eine sehr einfache Aktivität zu erstellen, die ein TextView in der Mitte des Layouts hat und es alle paar Sekunden zu einem anderen Text wechseln lässt. Zum Beispiel wird die TextView "text1" sagen, für ein paar Sekunden pausieren, dann "text2" sagen und erneut pausieren. Irgendwann möchte ich weitere Texte hinzufügen und sie alle nacheinander durchlaufen lassen. Ich weiß, dass das wie a aussieht Super einfache Sache, aber ich versuche in diesem Moment hauptsächlich über Threads und Handler zu lernen.Allerdings habe ich gelesen, wie wir lange Dinge vom UI-Thread fernhalten sollten, um einen Fehler zu vermeiden, also dachte ich, ich würde einen Handler benutzen ., um einfach zwischen zwei Texten auf dem Bildschirm wechseln Leider kann ich nicht arbeiten diese bekommen Hier ist ein Code.Pause mit Handler und PostVerloren in Android
public class MainActivity extends Activity {
String[] myarray = {"text1" , "text2"};
int arraylength = myarray.length;
int count;
Handler handler = new Handler();
TextView mytexts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mytexts = (TextView)findViewById(R.id.my_texts);
mytexts.setText(myarray[0]);
Thread t = new Thread(new Runnable(){
public void run() {
for (int count = 0; count < arraylength; count++){
handler.postDelayed(new Runnable(){
public void run() {
mytexts.setText(myarray[1]);
}
}, 7000);
}
}
});
t.start();
}
}
Von dem, was ich in der logcat sehen können, scheint der Handler postDelayed ein Recht nach dem anderen zu laufen (In meinem Code, es dauert nicht 7 Sekunden mit dem PostDelay, um einen anderen postDelayed zu tun.) Ich möchte auch die 1 in "mytexts.setText (myar ray [1]); "sei wie" in der for-Schleife "zählt", also kann es der gleiche sein wie einer der Strings im Array, aber das gibt mir einen Fehler. Ich bin stundenlang daran festgeklemmt und andere Beispiele, die ich online gefunden habe, erscheinen viel zu kompliziert für jemanden wie mich, der hauptsächlich die Grundlagen abbauen will, bevor ich andere Dinge angehen kann. Jede Hilfe bei all dem wäre sehr willkommen. Vielen Dank.
Warum Sie den 'postDelayed' nicht entfernen und verwenden Sie einen' Post' mit einem 'while' und dann tun einige' Thema .schlaf (zeit) '? –
@RotaryHeart Die postDelay-Methode schreibt Code, der nach der Verzögerung im Haupt-Thread ausgeführt werden soll. Sie müssen den Thread nicht schlafen. In diesem speziellen Fall braucht er den Thread überhaupt nicht! – Ali
@Ali Ja du hast recht, ich wollte seinen Code nicht ändern, aber ihm sagen, wie man es mit diesem Code macht. –