Я очень новичок в программировании для Android, поэтому, пожалуйста, простите мой нубизм. Я пытаюсь создать очень простое действие, которое будет иметь один TextView в середине макета и просто будет переключаться на другой текст каждые пару секунд. Например, TextView скажет «текст1», сделает паузу на пару секунд, затем скажет «текст2» и снова сделает паузу. В конце концов, я хочу добавить больше текстов и заставить их все циклически повторяться один за другим. Я знаю, что это похоже на очень простая вещь, но в данный момент я в основном пытаюсь узнать о потоках и обработчиках. В любом случае, я читал о том, как мы должны держать длинные вещи вне потока пользовательского интерфейса, чтобы предотвратить ошибку, поэтому я подумал, что буду использовать обработчик чтобы просто переключаться между двумя текстами на экране. К сожалению, я не могу заставить это работать. Вот код:
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();
}
}
Из того, что я вижу в логарифме, обработчик, кажется, запускает postDelayed один за другим (в моем случае кода он НЕ ждет 7 секунд с postDelay, чтобы сделать еще один postDelayed). Кроме того, я хотел бы сделать 1 в «mytexts.setText (myarray [1]);» быть таким же, как «count» в цикле for, поэтому он может быть таким же, как одна из строк в массиве, но это дает мне ошибку. Я застрял на этом в течение нескольких часов, и другие примеры, которые я нашел в Интернете, кажутся слишком сложными для кого-то вроде меня, который в основном хочет понять основы, прежде чем я смогу заняться другими вещами. Любая помощь вообще с любым из этого будет высоко оценена. Спасибо.
postDelayed
и не использоватьpost
сwhile
, а затем сделатьThread.sleep(time)
? - person Rotary Heart   schedule 15.08.2013