图片预览页返回空指针异常
shucc opened this issue · 5 comments
测试手机
Nexus 5
系统版本
6.0.1
错误信息
Process: com.example.previewpicture, PID: 20678
java.lang.RuntimeException: Unable to destroy activity {com.example.previewpicture/com.previewlibrary.GPreviewActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3831)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3849)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at com.previewlibrary.GPreviewActivity$PhotoPagerAdapter.getCount(GPreviewActivity.java:208)
at android.support.v4.view.ViewPager$MyAccessibilityDelegate.canScroll(ViewPager.java:3103)
at android.support.v4.view.ViewPager$MyAccessibilityDelegate.onInitializeAccessibilityNodeInfo(ViewPager.java:3071)
at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.onInitializeAccessibilityNodeInfo(AccessibilityDelegateCompat.java:246)
at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.onInitializeAccessibilityNodeInfo(AccessibilityDelegateCompatJellyBean.java:66)
at android.view.View.onInitializeAccessibilityNodeInfo(View.java:6082)
at android.view.View.createAccessibilityNodeInfoInternal(View.java:6043)
at android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo(View.java:22287)
at android.view.View.createAccessibilityNodeInfo(View.java:6026)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:145)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
at android.view.View.onInitializeAccessibilityEventInternal(View.java:5980)
at android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent(View.java:22199)
at android.support.v4.view.AccessibilityDelegateCompatIcs.onInitializeAccessibilityEvent(AccessibilityDelegateCompatIcs.java:97)
at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:192)
at android.support.v4.view.AccessibilityDelegateCompat.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:432)
at android.support.v4.view.ViewPager$MyAccessibilityDelegate.onInitializeAccessibilityEvent(ViewPager.java:3054)
at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:241)
at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.onInitializeAccessibilityEvent(AccessibilityDelegateCompatJellyBean.java:61)
at android.view.View.onInitializeAccessibilityEvent(View.java:5966)
at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:5833)
at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:22138)
at android.support.v4.view.AccessibilityDelegateCompatIcs.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatIcs.java:122)
at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:223)
at android.support.v4.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:371)
at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:268)
at android.support.v4.view.AccessibilityDeleg
目前发现两种修改方法
1.在FragmentPagerAdapter中判断fragments是否为空
private class PhotoPagerAdapter extends FragmentPagerAdapter {
PhotoPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
if (null == fragments) {
return 0;
}
return fragments.size();
}
}
2.修改onDestory中释放资源顺序
@Override
protected void onDestroy() {
ZoomMediaLoader.getInstance().getLoader().clearMemory(this);
viewPager.setAdapter(null);
viewPager.clearOnPageChangeListeners();
viewPager.removeAllViews();
fragments.clear();
imgUrls.clear();
fragments = null;
imgUrls = null;
super.onDestroy();
}
不好意思,我没有null判断,clearf方法。我改修一下
谢谢的你建议,版本1.0.9 好用的话,star一下
是否有考虑修改下开源协议?GPL要求似乎太严苛了点
苦笑 我看一下
也是自己进步和改进