PictureSelector
PictureSelector copied to clipboard
#2288(java.lang.IndexOutOfBoundsException at xxx PictureSelectorPreviewFragment.initViewPagerData)的问题依然存在
Current use version?
当前使用的版本是多少?
v3.10.2
Will this problem occur in demo?
Demo能否复现这问题?
否,线上问题,不必现
Describe the problem or provide an error log?
描述问题或提供错误log?
java.lang.ArrayIndexOutOfBoundsException
length=3; index=-1
java.util.ArrayList.get(ArrayList.java:439)
com.luck.picture.lib.PictureSelectorPreviewFragment.initViewPagerData(PictureSelectorPreviewFragment.java:1079)
com.luck.picture.lib.PictureSelectorPreviewFragment.onViewCreated(PictureSelectorPreviewFragment.java:265)
androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3128)
androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:552)
androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1890)
androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1808)
androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1751)
androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2976)
androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2886)
...
同样遇到
这个问题3.10.7版本上还存在,我看代码中是这样的:
private void initViewPagerData(ArrayList<LocalMedia> data) {
viewPageAdapter = createAdapter();
viewPageAdapter.setData(data);
viewPageAdapter.setOnPreviewEventListener(new MyOnPreviewEventListener());
viewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
viewPager.setAdapter(viewPageAdapter);
SelectedManager.clearPreviewData();
**//其它逻辑没仔细看,但从报错来看,这里应该再加一个条件 || curPosition < 0**
if (data.size() == 0 || curPosition > data.size()) {
onKeyBackFragmentFinish();
return;
}
LocalMedia media = data.get(curPosition);
bottomNarBar.isDisplayEditor(PictureMimeType.isHasVideo(media.getMimeType())
|| PictureMimeType.isHasAudio(media.getMimeType()));
tvSelected.setSelected(SelectedManager.getSelectedResult().contains(data.get(viewPager.getCurrentItem())));
viewPager.registerOnPageChangeCallback(pageChangeCallback);
viewPager.setPageTransformer(new MarginPageTransformer(DensityUtil.dip2px(getContext(), 3)));
viewPager.setCurrentItem(curPosition, false);
sendChangeSubSelectPositionEvent(false);
notifySelectNumberStyle(data.get(curPosition));
startZoomEffect(media);
}
已提PR,大佬可以看一下:https://github.com/LuckSiege/PictureSelector/pull/2583