Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

图片预览页返回空指针异常 #14

Closed
shucc opened this issue Sep 26, 2017 · 5 comments
Closed

图片预览页返回空指针异常 #14

shucc opened this issue Sep 26, 2017 · 5 comments

Comments

@shucc
Copy link

shucc commented Sep 26, 2017

测试手机

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();
    }
@yangchaojiang
Copy link
Owner

不好意思,我没有null判断,clearf方法。我改修一下

@yangchaojiang
Copy link
Owner

谢谢的你建议,版本1.0.9 好用的话,star一下

@shucc
Copy link
Author

shucc commented Sep 26, 2017

是否有考虑修改下开源协议?GPL要求似乎太严苛了点

@yangchaojiang
Copy link
Owner

苦笑 我看一下

@yangchaojiang
Copy link
Owner

也是自己进步和改进

@shucc shucc closed this as completed Sep 26, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants