我在我的应用中创建了滑动功能。当我在最后一张图像上时,我从右向左滑动。它仍然在相同的图像上很好。然后我再次从右向左滑动。然后从左到右我的应用程序崩溃。第一张图像上的类似情况。我知道这是因为变量的增量。我想如果用户在最后一张图片上,他甚至多次从右向左滑动。然后,如果他从左向右滑动以前的图像来。请帮我解决这个问题。 位置是b / w 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]);
}
当我在最后一张图片上时,我正在获取数组索引超出范围的错误长度= 9 index = 9,然后从右向左滑动,然后从左向右滑动。
我得到数组索引超出范围的错误。 length = 9 index = -1。当我在第一张图像上并从左向右滑动时,然后从右向左滑动。
编辑 -
我想如果用户在第一张图片上并且他从左向右滑动图像固定。当他从右向左滑动下一张图像时。
答案 0 :(得分:2)
您需要更改递增或递减position
的条件,以使其不低于零或超过最后一个索引。从左到右的正确条件是:
if(position > 0) {
position--;
changeBackground();
}
这将确保如果您当前在第一张图像上,则不会继续减少位置(因为您希望保持原位)。如果有以前的图像,它只会转到上一张图像。
同样,你想改变你的第二个条件,这样你只有在下一个索引是有效索引的情况下才增加position
- 如果你是最后一个索引,你不想继续下一个图像一,即position
是mThumbId.length - 1
。所以你的修改条件是:
if(position < mThumbId.length - 1) {
position++;
changeBackground();
}
答案 1 :(得分:0)
这应该可以做到这一点:)我没有测试它但它应该可以工作。
public void onRightToLeftSwipe(){
Log.i(logTag, "RightToLeftSwipe!");
if(position < mThumbId.length - 1){
position++;
changeBackground();
}
}
public void onLeftToRightSwipe(){
Log.i(logTag, "LeftToRightSwipe!");
if(position > 0){
position--;
changeBackground();
}
}
private void changeBackground(){
full.setBackgroundResource(mThumbId[position]);
}