Android App stürzt nach einiger Zeit mit Fragmenten und ViewPager ab

7

Ich habe ein Problem mit meiner Android-App, die beim Versuch, meine Fragmente wiederherzustellen, abstürzt. Ich habe dem Paket, das ich wiederherstellen möchte, keine benutzerdefinierten Variablen hinzugefügt. Es ist alles Standard. Ich benutze Fragmente und ViewPager. Sehen Sie sich meine Codefragmente unten an:

%Vor%

Ich erhalte diesen Stapel:

%Vor%

Wie ich verstanden habe, kann dies ein bekanntes Problem mit dem Support-Paket sein und eine mögliche Lösung wäre es, setUserVisibleHint (true) in onSaveInstanceState zu verwenden. Aber das hat nicht geholfen.

Weiß jemand eine andere Lösung für das Problem oder was habe ich falsch gemacht?

    
xteci 19.06.2012, 08:22
quelle

3 Antworten

21

Ich habe die gleiche Art von Problem festgestellt, nachdem ich ViewPager mit FragmentStatePagerAdapter in Tab gestartet habe.

Dann habe ich mit allen Foren zu diesem Thema gespielt und mir für zwei Tage den Kopf gebrochen, um herauszufinden, warum dieses Problem aufgetreten ist und wie ich es beheben kann, aber keine perfekte Lösung gefunden habe, die meine Anforderungen erfüllt.

>

Ich habe die Lösung, um den NPE-Absturz zu vermeiden, benutze FragmentPagerAdapter anstelle von FragmentStatePagerAdapter. Wenn ich FragmentPagerAdapter anstelle von FragmentStatePagerAdapter ersetze, dann wurde das NPE-Problem nicht behoben, aber dieselbe Seite wird nicht für die weitere Navigation aktualisiert (was meine Anforderung ist).

Überschreiben Sie schließlich die saveState-Methode für FragmentStatePagerAdapter und alles funktioniert wie erwartet.

%Vor%


Wie ich dieses Problem leicht reproduzieren kann:
Ich verwende das Gerät der höheren Version (4.1) und befolgte die folgenden Schritte:
1. Gehe zu Einstellungen - & gt; Entwickleroptionen.
2. Klicken Sie auf die Option "Aktivitäten nicht behalten".

Jetzt habe ich mit meiner App gespielt.

Vor dem Überschreiben der saveState () -Methode bei jedem Absturz der App aufgrund der NPE unter android.support.v4.app.FragmentManagerImpl.getFragment (Unknown Source). Aber nach dem Überschreiben saveState () ist kein Absturz registriert.

Ich hoffe, damit haben Sie kein Problem.

    
Lalit Kumar Sahoo 16.03.2013 02:32
quelle
0

Ich habe anfangs die von @Lalit Kumar Sahoo vorgeschlagene Lösung verwendet. Ich bemerkte jedoch ein schwerwiegendes Problem: Jedes Mal, wenn ich das Gerät rotierte, fügte der Fragment-Manager neue Fragmente hinzu, ohne die alten zu entfernen . Also habe ich weiter gesucht und einen Fehlerbericht mit einem Workaround-Vorschlag ( Post # 1 ) gefunden ). Ich habe diesen Fix verwendet und mit meiner App getestet. Das Problem scheint ohne irgendwelche Nebenwirkungen gelöst zu sein:

  

Workaround: Erstellen Sie einen benutzerdefinierten FragmentStatePagerAdapter im Ordner src / android / support / v4 / app des Projekts und verwenden Sie ihn.

%Vor%     
zilinx 15.10.2013 09:13
quelle
-1

Warum genau machst du das?

%Vor%

Dies:

%Vor%

Instantiiert das Fragment.

Sie können Daten wie folgt in das Fragment laden:

%Vor%     
akshaydashrath 19.06.2012 20:38
quelle