Desidero pianificare un'azione per modificare automaticamente le pagine di ViewPager. Ho provato:Android ViewPager cambia automaticamente pagina
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
swipeTimer = new Timer();
swipeTimer.schedule(new TimerTask() {
@Override
public void run() {
if (currentPage == NUM_PAGES) {
currentPage = 0;
}
featureViewPager.setCurrentItem(currentPage++, true);
}
}, 100, 500);
ma sto ottenendo sempre:
E/AndroidRuntime(5381): FATAL EXCEPTION: Timer-0
E/AndroidRuntime(5381): java.lang.IllegalStateException: Must be called from main thread of process
Sono già in proprio filo conduttore? Come posso risolvere questo?
Grazie per il vostro tempo.
==================================== EDIT: ===== ================
Grazie per tutte le vostre risposte. Sulla base di queste risposte mi sono imbattuto in 2 soluzioni:
Soluzione 1:
swipeTimer = new Timer();
swipeTimer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (currentPage == NUM_PAGES) {
currentPage = 0;
}
featureViewPager.setCurrentItem(currentPage++, true);
}
});
}
}, 500, 3000);
Soluzione 2:
final Handler handler = new Handler();
final Runnable Update = new Runnable() {
public void run() {
if (currentPage == NUM_PAGES) {
currentPage = 0;
}
featureViewPager.setCurrentItem(currentPage++, true);
}
};
swipeTimer = new Timer();
swipeTimer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(Update);
}
}, 500, 3000);
che uno è migliore o sono la stessa cosa?
Grazie ancora.
è possibile utilizzare il ricevitore broadcast per modificare la pagina sul tempo specifico, registrare il ricevitore e lo chiamano quando u vuole cambiare l'assegno pagina – abhi
[questo] (http://stackoverflow.com/a/9738560/2479292 fuori. – zozelfelfo
Dovresti usare un ViewAnimator (ad es. ViewFlipper: http://developer.android.com/reference/android/widget/ViewFlipper.html) e ti renderà il lavoro più semplice o userai un Handler (costruito nel thread principale: http: //developer.android.com/reference/android/os/Handler.html) – Laviniux