android - 使用 setCurrentItem(int index) 时,android PageAdapter 和 ViewPager 是否检查 indexoutofbounds 异常?

标签 android android-fragments android-viewpager

所以我的 Activity 正确使用了 PageAdapter 和 ViewPager,其中 3 个图像可以从左向右滚动。然后我在 Activity 上设置了左右箭头,并为两个图像设置了一个 onClickListener,以便使用 ViewPager 寻呼机向左和向右滚动。方法就像

private void setOnClickArrows(final ViewPager pager){
ImageView rightArrow = (ImageView) view.findViewById(R.id.right);
ImageView leftArrow = (ImageView) view.findViewById(R.id.left);


rightArrow.setOnClickListener(new OnClickListener () 
                       @Override
            public void onClick(View v) {
                pager.setCurrentItem(pager.getCurrentItem() + 1);
            }

        });

leftArrow.setOnClickListener(new OnClickListener () 
                       @Override
            public void onClick(View v) {
                pager.setCurrentItem(pager.getCurrentItem() - 1);
            }

        });

}

这非常有效。但是,我想知道 ViewPager 如何检查索引是否越界以及我是否应该这样做?

最佳答案

是的,确实如此。引用source并查看 setCurrentItemInternal 方法(由 setCurrentItem() 调用)。

有一些检查可以避免崩溃,其中之一就是这样,它可以避免 OOBExceptions:

if (item < 0) {
   item = 0;
} else if (item >= mAdapter.getCount()) {
   item = mAdapter.getCount() - 1;
}

你应该检查一下自己吗?由你决定。我不会,因为这些检查是微不足道的,所以我不希望这些检查消失。

关于android - 使用 setCurrentItem(int index) 时,android PageAdapter 和 ViewPager 是否检查 indexoutofbounds 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21105535/

相关文章:

fragment 中的 Android ListView

java - 如何在每个 ActionBar 选项卡中使用不同的布局 (Android)

android - NestedScrollView 内的 ViewPager 内的 WebView 不垂直滚动

android - 如何制作带有特定声音的推送通知?

Android通知不断重复通知声音

Android 音频焦点 (AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK)

android - 为什么 getFragmentManager().findFragmentById 返回 null(导致 NullPointerException)

android - 应用强制关闭 viewPager.setAdapter(adapter)

java - 使用 viewPager 时无法恢复 Activity

android - 无法从 TimePicker 获取时间