Sono molto nuovo alla programmazione Android quindi per favore perdona la mia noobie-ness. Sto provando a creare un'attività molto semplice che avrà un TextView nel mezzo del layout e semplicemente passerà a un testo diverso ogni due secondi. Ad esempio, TextView pronuncerà "text1", metterà in pausa per un paio di secondi, quindi dirà "text2" e metterà nuovamente in pausa. Infine, voglio aggiungere altri testi e farli scorrere tutti uno dopo l'altro. cosa semplicissima, ma in questo momento cerco principalmente di conoscere thread e gestori. Comunque, ho letto su come dovremmo tenere le cose lunghe fuori dal thread dell'interfaccia utente per prevenire un errore, quindi ho pensato che avrei usato un gestore . semplicemente passare da 2 testi sullo schermo Purtroppo, non posso arrivare a questo lavoro Ecco po 'di codice:.Pausa con handler e postDelayed 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();
}
}
da quello che posso vedere nel logcat, il gestore sembra funzionare postDelayed una dopo l'altra (nel mio caso del codice, NON aspira 7 secondi con PostDelay per fare un altro postDelayed). Inoltre, vorrei fare il 1 in "mytexts.setText (myar ray [1]); "essere uguale a" count "nel ciclo for in modo che possa essere uguale a una delle stringhe dell'array ma ciò mi dà un errore. Sono rimasto bloccato per ore e altri esempi che ho trovato online sembrano troppo complicati per uno come me che vuole soprattutto ottenere le basi prima di poter affrontare altre cose. Qualsiasi aiuto con qualsiasi cosa sarebbe molto apprezzato. Grazie.
Perché non si rimuove il 'postDelayed' e utilizzare un' POST' con un 'while' e poi fare un po' Discussione .sleep (tempo) '? –
@RotaryHeart il metodo postDelay pubblicherà il codice da eseguire sul thread principale dopo il ritardo. Non hai bisogno di dormire la discussione. In questo caso particolare non ha assolutamente bisogno del Thread! – Ali
@Ali Sì, hai ragione, non volevo cambiare il suo codice, ma per dirgli come farlo con quel codice. –