Jestem nowicjuszem w programowaniu Android, więc proszę wybaczyć moje noobie-stwo. Próbuję stworzyć bardzo prostą czynność, która będzie miała jeden tekst w środku Układu i po prostu zmieni go na inny tekst co kilka sekund. Na przykład TextView powie "text1", zatrzyma się na kilka sekund, a następnie powie "text2, i znowu pauzę." W końcu chcę dodać więcej tekstów i mieć je wszystkie cykl jeden po drugim. Wiem, że wydaje się, że bardzo prosta rzecz, ale głównie staram się w tej chwili dowiedzieć się o wątkach i programach obsługi. W każdym razie, czytałem o tym, jak powinniśmy trzymać długie rzeczy z wątku UI, aby zapobiec błędowi, więc pomyślałem, że skorzystam z programu obsługi . po prostu przełączyć się pomiędzy 2 tekstów na ekranie Niestety, nie mogę uzyskać to do pracy Oto niektóre kodu.Wstrzymywanie z obsługą i postu w Androidzie
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();
}
}
z tego co widzę w LogCat, przewodnik wydaje się działać postDelayed jedno prawo po drugim (w moim przypadku kod NIE czeka 7 sekund, a postDelay robi inny postDelayed). Chciałbym również wprowadzić 1 w "mytexts.setText (myar ray [1]); "bądź taki sam jak" count "w pętli for, więc może być taki sam jak jeden z ciągów w tablicy, ale to daje mi błąd. Utknąłem na to od wielu godzin, a inne przykłady, które znalazłem online wydają się zbyt skomplikowane dla kogoś takiego jak ja, który przede wszystkim chce pozbyć się podstaw, zanim będę mógł zająć się innymi rzeczami. Jakakolwiek pomoc w tej sprawie byłaby bardzo doceniana. Dziękuję Ci.
Dlaczego nie można usunąć 'postDelayed' i użyć' Post' z 'while' a następnie zrobić kilka' wątek .sleep (czas) '? –
@RotaryHeart Metoda postDelay spowoduje opublikowanie kodu, który ma zostać wykonany w wątku głównym po opóźnieniu. Nie musisz spać w wątku. W tym konkretnym przypadku wcale nie potrzebuje Nici! – Ali
@Ali Tak, masz rację, nie chciałem zmienić jego kodu, ale powiedzieć mu, jak to zrobić z tym kodem. –