Android-ParallaxHeaderViewPager icon indicating copy to clipboard operation
Android-ParallaxHeaderViewPager copied to clipboard

Inactivity crash

Open alirahimpour89 opened this issue 10 years ago • 3 comments

After leaving the app in the background for a long while, you will get a crash when changing tab and and the header wont scroll...

alirahimpour89 avatar May 14 '14 10:05 alirahimpour89

Yeah, also got the same issue: Here is problem, just NPE java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kmshack.newsstand/com.kmshack.newsstand.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void com.kmshack.newsstand.ScrollTabHolder.adjustScroll(int)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void com.kmshack.newsstand.ScrollTabHolder.adjustScroll(int)' on a null object reference at com.kmshack.newsstand.MainActivity.onPageSelected(MainActivity.java:96) at com.astuetz.PagerSlidingTabStrip$PageListener.onPageSelected(PagerSlidingTabStrip.java:385) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:543) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:509) at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1282) at android.view.View.dispatchRestoreInstanceState(View.java:12799) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2637) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2643) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2643) at android.view.View.restoreHierarchyState(View.java:12777) at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1744) at android.app.Activity.onRestoreInstanceState(Activity.java:944) at android.app.Activity.performRestoreInstanceState(Activity.java:916) at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1138) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)             at android.app.ActivityThread.access$800(ActivityThread.java:135)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:136)             at android.app.ActivityThread.main(ActivityThread.java:5001)             at java.lang.reflect.Method.invoke(Native Method)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)

3mph4515 avatar Sep 29 '14 15:09 3mph4515

how did you fix it?

noxius avatar Oct 11 '14 14:10 noxius

I had same problem.. The reason of the problem is that, Android system start killing activities whenever there is shortage of memory, you need to save your data in onSavedInstanceState() and restore it whenever Activity/Fragment is recreated, either in onCreate or onRestoreInstanceState()..

The reason why your application crashed is that, mScrollTabHolders contains SparseArrayCompat of fragments which is not saved in onSavedInstanceState() so after restore it turns out to be null and your application throws a null pointer exception..

In order to fix this crash Instead of using an activity for ViewPager, I used activity with a fragment and moved viewPager to that fragment. In any case main activity gets killed, Fragment inside activity is also recreated and viewPager is regenerated so mScrollTabHolders never gets nulled...

Make sure you save your data in onSavedInstanceState() for recreating your fragment..

aman400 avatar Mar 03 '15 08:03 aman400