我正在我的应用中创建滑动。当我在最后一张图片上时,我从右向左滑动。它仍然在同一图像上,这很好。然后我再次从右向左滑动。然后从左到右我的应用程序崩溃了。第一张图片上的类似情况。我知道这是因为变量的增加。我想要如果用户在最后一张图片上,他甚至多次从右向左滑动。然后,如果他从左向右滑动,就会出现之前的图像。请帮我解决这个问题。 位置在黑白 0 到 8 之间。
代码-
position = i.getExtras().getInt("id");
public void onRightToLeftSwipe(){
Log.i(logTag, "RightToLeftSwipe!");
if(position<mThumbId.length){
position++;
changeBackground();
}
}
public void onLeftToRightSwipe(){
Log.i(logTag, "LeftToRightSwipe!");
if(position>=0){
position--;
changeBackground();
}
}
private void changeBackground(){
full.setBackgroundResource(mThumbId[position]);
}
当我在最后一张图像上并从右向左滑动然后从左向右滑动时,我得到数组索引超出界限错误 length=9 index=9。
我收到数组索引超出范围的错误。长度=9 索引=-1。当我在第一张图片上时,从左向右滑动,然后从右向左滑动。
编辑-
我想如果用户在第一张图片上并且他从左向右滑动固定图像。当他从右向左滑动时,下一张图片出现了。
最佳答案
您需要更改递增或递减 position
的条件,以便它不会低于零或超过最后一个索引。从左到右的正确条件是这样的:
if(position > 0) {
position--;
changeBackground();
}
这将确保如果您当前位于第一张图片上,则不会继续减少位置(因为您想留在原处)。如果有以前的图像,它只会转到以前的图像。
同样,您想要更改第二个条件,以便仅在下一个索引有效时才增加 position
- 如果您在最后一个,即 position
是 mThumbId.length - 1
。所以你修改后的条件是这样的:
if(position < mThumbId.length - 1) {
position++;
changeBackground();
}
关于android - 如何在android中处理滑动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22477819/