2017-08-03 3 views
1

in meiner Aktivität beibehalten i ViewPager haben, die, die für zwei fragments, in diesen Fragmenten umgesetzt Ich habe einige Pop-up wie Dialog, der auf drehen Gerät Popups wieder von vorn anfangen, Popups dies auf createview ist und nach dem Mutter Aktivität i läuft Holen Sie einige Daten vom Server, wie kann ich diese Fragmente behalten, um nicht wieder auf Änderungsgerätausrichtung zu laden?Android-Fragmente auf ViewPager

Aktivität:

private void setupViewPager(ViewPager viewPager) { 
    adapter = new RegisterViewPagerAdapter(getSupportFragmentManager()); 

    //adapter.addFragment(new FragmentEmpty()); 
    adapter.addFragment(FragmentCheckValidationCode.getInstance()); 
    adapter.addFragment(FragmentRegisterPhoneNumber.getInstance()); 

    viewPager.setOffscreenPageLimit(1); 
    viewPager.setAdapter(adapter); 
    registerPages.setCurrentItem(1); 
    registerPages.setPageMargin(50); 
    registerPages.setScrollDurationFactor(5); 
} 

Fragmente:

public static FragmentCheckValidationCode getInstance() { 
    if (instance == null) { 
     instance = new FragmentCheckValidationCode(); 
    } 
    return instance; 
} 

FragmentCheckValidationCode:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //@formatter:off 
     activity     = getActivity(); 
     context     = getActivity().getBaseContext(); 
    //@formatter:on 

    setRetainInstance(true); 
} 
+0

Verwenden Sie FragmentPagerAdapter anstelle von FragmentStatePagerAdapter. Dies lädt alle Fragmente in den Speicher. Zum Speichern der Instanz siehe @SaravInferns Antwort –

+0

@NinoHandler ich ändere 'FragmentPagerAdapter' in' FragmentStatePagerAdapter' und füge 'setRetainInstance (true) hinzu;' in 'onCreate', fragmentiere mit Dialogen lade wieder –

+0

verwendest du ein anderes Layout für Landschaft? wenn nicht, könntest du android: configChanges = "orientation | screenSize | keyboardHidden" zu deiner Aktivität in dir hinzufügen Manifest –

Antwort

1

, wenn Sie in Ihrem Manifest

android:configChanges="orientation|screenSize|keyboardHidden" 

auf Ihre Aktivität Tag hinzufügen nicht ein anderes Layout für die Landscape-Modus nutzen könnten. Dies teilt dem System mit, dass Sie die Konfigurationsänderung selbst übernehmen.

+0

Dank und was ist mit verschiedenen Layout? Wie kann ich das schaffen? –

+0

dann muss man eine andere Lösung finden. - eine DialogFragment erstellen und zeigen Sie es mit einem Tag - check in onViewCreated() getSupportFragmentManager() findFragmentByTag (DIALOG_TAG) und zeigen Sie es noch einmal ... –

+0

, wenn meine Frage hilft, bitte Stimme auch dafür, danke –

0

in onCreate Verwendung setRetainIntanse Ihres Fragment (true);

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Retain this fragment across configuration changes. 
    setRetainInstance(true); 

    } 

siehe here

+0

ich habe das auf 'onCreate' aber Fragment konnte nicht –

Verwandte Themen