1

In my app in an Activity there are three tabs with pager effects. I am using FragmentStatePagerAdapter and getting an Exception when the app is opened from the background after 15 minutes of the app being pushed to the background.

The stacktrace

FATAL EXCEPTION: main
Process: com.myapp, PID: 21506
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.willage/com.myapp.DashboardActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.app.Fragment android.support.v4.app.FragmentManager.getFragment(android.os.Bundle, java.lang.String)' on a null object reference
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
   at android.app.ActivityThread.-wrap11(ActivityThread.java)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
   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 virtual method 'android.support.v4.app.Fragment android.support.v4.app.FragmentManager.getFragment(android.os.Bundle, java.lang.String)' on a null object reference
   at android.support.v4.app.FragmentStatePagerAdapter.restoreState(FragmentStatePagerAdapter.java:212)
   at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1390)
   at android.view.View.dispatchRestoreInstanceState(View.java:14746)
   at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3121)
   at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3127)
   at android.view.View.restoreHierarchyState(View.java:14724)
   at android.support.v4.app.Fragment.restoreViewState(Fragment.java:465)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1094)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
   at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2046)
   at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:174)
   at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:598)
   at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)
   at android.app.Activity.performStart(Activity.java:6253)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
   at android.app.ActivityThread.-wrap11(ActivityThread.java) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
   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) 

The PagerAdapter

 class ViewPagerAdapter extends FragmentStatePagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return null==mFragmentList?0:mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}
Knossos
  • 15,802
  • 10
  • 54
  • 91
  • There seems to be a memory leak inside your `Activity`. Including the source code of your `Activity` could help identify it. – 2hamed Oct 14 '16 at 09:02
  • This might be a duplicate of http://stackoverflow.com/questions/18642890/fragmentstatepageradapter-with-childfragmentmanager-fragmentmanagerimpl-getfra - could you test whether this resolves it for you? - http://stackoverflow.com/a/19099987/503508 – Knossos Oct 14 '16 at 09:03

0 Answers0