Rom*_*man 146 android android-viewpager
我在我的应用程序中使用ViewPager并在主Activity中定义它.在Inside onCreate方法中,我从SharedPreferences加载了一些页面,然后将它传递给PagerAdapter:
@Override
public int getCount() {
return numberOfPages;
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果我将Preferences(或其他Activity)中的这个数字更改为我之前查看过的其他页面索引,我的应用程序崩溃了,因为当我使用此ViewPager返回活动时,此索引超出范围.只需更改活动的ViewPager页面即可修复它.有什么办法吗?
Mar*_*son 390
我不确定我是否完全理解这个问题,但从问题的标题来看,我猜你正在寻找的是什么pager.setCurrentItem( num ).这允许您以编程方式切换到其中的另一个页面ViewPager.
如果这不是问题,我需要从logcat看到更具体的堆栈跟踪.
Abr*_*yev 19
向右滑动
viewPager.arrowScroll(View.FOCUS_RIGHT);
向左滑动
viewPager.arrowScroll(View.FOCUS_LEFT);
小智 17
如果不检查您的代码,我认为您所描述的是您的页面不同步而且您有过时的数据.
你说你正在改变页数,然后崩溃,因为你正在访问旧的页面集.这听起来就像你pageAdapter.notifyDataSetChanged()在更改数据后没有打电话一样.
当您viewPager显示一组10页的第3页,并且您更改为仅有5的一组时,然后调用notifyDataSetChanged(),您将找到的是您现在正在查看新组的第3页.如果您之前正在查看旧集的第8页,则在放入新集并进行呼叫后,notifyDataSetChanged()您会发现现在正在查看新集的最后一页而不会崩溃.
如果您只是更改当前页面,则可能只是掩盖了问题.
小智 13
要切换到另一个页面,请尝试使用以下代码:
viewPager.postDelayed(new Runnable()
{
@Override
public void run()
{
viewPager.setCurrentItem(num, true);
}
}, 100);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113994 次 |
| 最近记录: |