2015-03-11 20 views
8

Ho problemi a gestire il cambio di orientamento dello schermo con ViewPager e FragmentPagerAdapter. Funziona bene all'avvio dell'applicazione ma i frammenti all'interno del viewpager non sono visibili dopo il cambio di orientamento (forse perso). Come posso risolvere questo problema. In seguito è la struttura della mia attività: enter image description hereGestione modifica orientamento con ViewPager + FragmentPagerAdapter

edit: Questo è il file manifesto

<?xml version="1.0" encoding="utf-8"?> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 

<application 
    android:name="com.test.myapp.NetworkManager.TBVolleyInstance" 
    android:allowBackup="true" 
    android:icon="@drawable/launcher" 
    android:label="@string/app_name" 
    android:theme="@style/CustomActionBarTheme"> 
    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 

    <activity 
     android:name=".Home" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="adjustNothing" > 
    </activity> 
    <activity 
     android:name=".RouterActivity" 
     android:label="@string/app_name" > 
     <intent-filter android:label="@string/app_name" > 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

implementazione FragmentPagerAdapter:

public class PagerAdapter extends FragmentPagerAdapter{ 

public PagerAdapter(FragmentManager fm) { 
    super(fm); 

} 

@Override 
public Fragment getItem(int index) { 

    switch (index) { 
    case 0: 
     return new Fragment1(); 
    case 1: 
     return new Fragment2(); 
    } 
    return null; 
} 

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

@Override 
public float getPageWidth(int position){ 
    return(1.0f); 
} 

}

+1

prova a seguire questa guida https://github.com/codepath/android_guides/wiki/ViewPager-with-FragmentPagerAdapter –

risposta

5

Un po 'in ritardo, ma ho corretto questo problema sulla mia app. Ci sono due soluzioni.

1) È necessario utilizzare un FragmentStatePagerAdapter piuttosto che un FragmentPagerAdapter

O

2) Se il vostro ViewPager è avvolto in un frammento (come i tuoi programmi di immagine), quindi quando si crea l'adattatore del ViewPager, devi usare getChildFragmentManager() anziché getSupportFragmentManager().

Spero che questo aiuti qualcuno perché questo mi ha richiesto un'intera giornata di torture per capirlo.

+1

getChildFragmentManager() era la chiave! – Gomino

+0

getChildFragmentManager(), sei fantastico. –