我已经为ViewPager实现了自动滚动。但是我更早地调用了这个startAutoScroll()方法,甚至在页面实际加载或用户可见之前。这会导致崩溃。
我希望在用户可以看到所有页面后启动自动滚动。当页面实际可见时,请建议如何处理通知。
这是我的startAutoScroll方法。
void startAutoScroll() {
if (handler == null) {
new Thread(new Runnable() {
public void run() {
handler = new Handler(Looper.getMainLooper()){
public void handleMessage(android.os.Message msg) {
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
}
};
handler.postDelayed(10,10);
}
}).start();
}
r = new Runnable() {
public void run() {
handler.postDelayed(r, 10);
Message msg = handler.obtainMessage();
handler.sendMessage(msg);
}
};
}
我在How to determine when Fragment becomes visible in ViewPager
得到了一个很好的解决方案答案 0 :(得分:0)
我通过ViewTreeObserver
得到了答案ViewTreeObserver vto = ViewPager.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
startAutoScroll();
ViewPager.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});