Chcę zaplanować działania, aby automatycznie zmienić moje strony ViewPager. Próbowałem:Android ViewPager automatycznie zmienić stronę
@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);
ale ja zawsze się:
E/AndroidRuntime(5381): FATAL EXCEPTION: Timer-0
E/AndroidRuntime(5381): java.lang.IllegalStateException: Must be called from main thread of process
jestem już w głównym wątku prawo? Jak mogę to rozwiązać?
Dziękujemy za poświęcony czas.
==================================== EDIT: ===== ===============================
Dzięki za wszystkie odpowiedzi. Na podstawie tych odpowiedzi natknąłem 2 rozwiązania:
Rozwiązanie 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);
Rozwiązanie 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);
co jest lepsze lub są one takie same?
Dzięki jeszcze raz.
można użyć odbiornika przekazu, aby zmienić stronę w określonym czasie, zarejestruj słuchawkę i zadzwonić, gdy u chcą zmienić czek strona – abhi
[To] (http://stackoverflow.com/a/9738560/2479292) na zewnątrz. – zozelfelfo
Powinieneś używać ViewAnimator (np. ViewFlipper: http://developer.android.com/reference/android/widget/ViewFlipper.html), a ułatwisz pracę lub skorzystasz z Handler'a (wbudowany w główny wątek: http: //developer.android.com/reference/android/os/Handler.html) – Laviniux