刚刚项目中使用viewpager。由于该控件出现的初衷应该是滑动切换。所以每次只缓存3个页签元素(当前的页面以及前一个和后一个页面)。处理viewpager点击切换页面会有问题。由于缓存不存在造成填充页为空(除了黑色的背景啥也没有)。
一般的切换是写个监听类然后分别赋值给页签。如下:
public class MyOnClickListener implements View.OnClickListener {
private int index = 0;
public MyOnClickListener(int i) {
index = i;
}
@Override
public void onClick(View v) {
mPager.setCurrentItem(index);
}
};
但是如果你有四个页签或者更多。当前在第一个页面如果此时你点击第四个页签就会出现空页面的情况。这是由于页面没有加载的缘故。想了好久最后得出如下解决方案:
public class MyOnClickListener implements View.OnClickListener {
private int index = 0;
public MyOnClickListener(int i) {
index = i;
}
@Override
public void onClick(View v) {
if(index==3)
{
mPager.setCurrentItem(1);
try {
Thread.sleep(80);
mPager.setCurrentItem(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
mPager.setCurrentItem(index);
}
};
当你点击最后一个页签时代码先加载前面的两个页面。以便缓存中添加了最后一个页面。问题解决!!!