2012-02-15 14 views
5

Sto costruendo un'applicazione utilizzando Pager con la libreria di compatibilità. La mia applicazione forceClose ogni volta che provo a metterla in pausa (quando torno sul mio desktop, per esempio).Problema del cercapersone Android in pausa

Non ho mai riscontrato errori di quel tipo e quindi non ho idea di come risolverlo.

te lo mostrerò il mio codice mentre io sono abbastanza sicuro che vi non c'è bisogno di guardare:

public class *** extends FragmentActivity { 
    /** Called when the activity is first created. */ 

    static final int NUM_ITEMS = 5; 
    static final int NUM_ACTUALITE = 0; 
    static final int NUM_SELECTION = 1; 
    static final int NUM_MULTIMEDIA = 2; 
    static final int NUM_FESTIVALIER = 3; 
    static final int NUM_***E = 4; 

    MyAdapter mAdapter; 

    ViewPager mPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.pager_layout); 

     mAdapter = new MyAdapter(getSupportFragmentManager()); 

     mPager = (ViewPager) findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 


    } 

    public static class MyAdapter extends FragmentPagerAdapter { 
     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public int getCount() { 
      return NUM_ITEMS; 
     } 

     @Override 
     public Fragment getItem(int position) { 

      switch (position) { 
      case NUM_ACTUALITE: 
       return ActuFragment.newInstance(); 
      case NUM_SELECTION: 
       return SelectionFragment.newInstance(); 
      case NUM_MULTIMEDIA: 
       return MultimediaFragment.newInstance(); 
      case NUM_FESTIVALIER: 
       return FestivalierFragment.newInstance(); 
      case NUM_***E: 
       return ***eFragment.newInstance(); 
      default: 
       return ActuFragment.newInstance(); 
      } 

     } 
    } 

e la mia logcat:

02-15 11:48:03.902: E/AndroidRuntime(11601): FATAL EXCEPTION: main 
02-15 11:48:03.902: E/AndroidRuntime(11601): java.lang.RuntimeException: Unable to pause activity {com.**.**/com.**.**.***Activity}: java.lang.NullPointerException 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2354) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2311) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2291) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.access$1700(ActivityThread.java:117) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:938) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.os.Looper.loop(Looper.java:130) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at java.lang.reflect.Method.invokeNative(Native Method) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at java.lang.reflect.Method.invoke(Method.java:507) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at dalvik.system.NativeStart.main(Native Method) 
02-15 11:48:03.902: E/AndroidRuntime(11601): Caused by: java.lang.NullPointerException 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.Activity.performSaveInstanceState(Activity.java:1037) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1181) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2336) 
02-15 11:48:03.902: E/AndroidRuntime(11601): ... 12 more 

Un frammento di miniere:

public class ActuFragment extends Fragment { 

    public static ActuFragment newInstance() { 
     ActuFragment f = new ActuFragment(); 

     return f; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View mainView = inflater.inflate(R.layout.actualites_layout, 
       container, false); 
     return mainView; 

    } 
} 
+1

deve essere qualcosa di sbagliato su come stai usando i frammenti. hai già provato a farlo senza frammenti? – josephus

+0

sì, e sembrava funzionare bene. non vuoi vedere gli altri parte del mio codice? –

+0

Mi manca leggere la tua risposta, no non l'ho provato senza frammenti, in realtà ero sicuro che non fosse possibile. ma ho bisogno di loro comunque. ho aggiunto uno dei miei frammenti, sono tutti uguali. –

risposta

26

Mi sono imbattuto nello stesso problema durante l'utilizzo della libreria di compatibilità ActionBarSherlock. La soluzione è che l'adattatore estende FragmentStatePagerAdapter anziché FragmentPagerAdapter.

+2

sì, questo ha funzionato per me –

+1

+1 @lukaciko ero bloccato in questo. – kishu27

+0

Funziona, grazie! I problemi sono iniziati dopo l'aggiunta di WebView in un frammento. – pointer

1

invece si può seguire il lavoro intorno here che ho postato in precedenza per un problema relativo alla NPE durante l'utilizzo Tab + Frammento + ViewPager + FragmentStatePagerAdapter

Spero stessa soluzione funzionerà per voi

-1

provare mu answer here fondamentalmente sovrascrivere il onSaveInstanceState, inserire almeno un valore nel bundle. Do for all fragments

Problemi correlati