2016-07-15 23 views
0

Ich entwickle eine Android-App und mit einem seltsamen Problem konfrontiert. Während die App im Hintergrund läuft und der Benutzer die Telefonsprache ändert und die App vom Hintergrund aus startet, wird die App beendet.App Crashing nach dem Ändern der Sprache Telefon und Relaunch von Hintergrund

Seltsame Sache ist, dass App nur abstürzt, wenn ich Sprache von Englisch zu Französisch ändere, aber während Änderung von Französisch zu Englisch oder einer anderen Sprache es ohne einen Unfall funktioniert. unten sind Fehlerprotokoll -

Prozess: com.myapp, PID: 17745 java.lang.IllegalStateException: Aktivität bei android.support.v4.app.FragmentManagerImpl.enqueueAction zerstört wurde (FragmentManager.java:1515) bei android.support.v4.app.BackStackRecord.commitInternal (BackStackRecord.java:638) bei android.support.v4.app.BackStackRecord.commitAllowingStateLoss (BackStackRecord.java:621) bei android.support.v4.app .FragmentStatePagerAdapter.finishUpdate (FragmentStatePagerAdapter.java:162) bei android.support.v4.view.ViewPager.populate (ViewPager.j avo: 1177) bei android.support.v4.view.ViewPager.populate (ViewPager.java:1025) bei android.support.v4.view.ViewPager.onMeasure (ViewPager.java:1545) bei android.view. View.measure (View.java:18794) bei android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:715) bei android.widget.RelativeLayout.onMeasure (RelativeLayout.java:461) bei android.view.View. Maßnahme (View.java:18794) bei android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:715) bei android.widget.RelativeLayout.onMeasure (RelativeLayout.java:461) bei android.view.View.measure (Aussicht .java-: 18794) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1465) bei android.widget.LinearLayout.measureVertical (LinearLayout.java : 748) bei android.widget.LinearLayout.onMeasure (LinearLayout.java:630) bei android.view.View.measure (View.java:18794) bei android.support.v4.widget.DrawerLayout.onMeasure (DrawerLayout .java: 1075) bei android.view.View.measure (View.java:18794) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.FrameLayout.o nMeasure (FrameLayout.java:194) bei android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:135) bei android.view.View.measure (View.java:18794) bei android.view. ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1465) bei android.widget.LinearLayout.measureVertical (LinearLayout.java:748) bei android.widget.LinearLayout. onMeasure (LinearLayout.java:630) bei android.view.View.measure (View.java:18794) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.FrameLayout.onMeasure (FrameLayout.java:194) bei android.view.View.measure (View.java:18794) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android. widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1465) bei android.widget.LinearLayout.measureVertical (LinearLayout.java:748) bei android.widget.LinearLayout.onMeasure (LinearLayout.java:630) bei android.view.View.measure (View.java:18794) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.FrameLayout.onMeasure (FrameLayout.java:194) bei com.android.internal.policy.PhoneWindow $ DecorView.onMeasure (PhoneWindow.java:2643) bei android.view.View.measure (View.java:18794) bei android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2100) bei und roid.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1216) bei android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1452) bei android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1107) bei android. view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:6013) bei android.view.Choreographer $ CallbackRecord.run (Choreographer.java:858) bei android.view.Choreographer.doCallbacks (Choreographer.java:670) bei android.view.Choreographer.doFrame (Choreographer.java:606) bei android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:844) bei android.os.Handler.handleCallback (Handler.java:739) bei android.os.Handler.dispatchMessage (Handler.java:95) bei android.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5417) bei java.lang.reflect.Method.invoke (Native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) bei com.android.internal.os.ZygoteInit.main (ZygoteInit .java: 616)

Antwort

0

Dies scheint ein Fehler zu sein, die von den Support-Funktionen hinzugefügt, um die verschachtelten Fragmente erschienen ist.

Der FragmentManager endet mit einem defekten internen Status, wenn er von der Aktivität getrennt wird.

Versuchen Sie diese auf Ihrem Fragment:

@Override 
public void onDetach() { 
    super.onDetach(); 
    try { 
     Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager"); 
     childFragmentManager.setAccessible(true); 
     childFragmentManager.set(this, null); 

    } catch (NoSuchFieldException e | IllegalAccessException e) { 
     throw new RuntimeException(e); 
    } 
} 

Lassen Sie mich wissen, ob es funktioniert.

Grüße,

0

Dies liegt daran, wenn Sie die Sprache des Geräts der neuen Instanzen der Fragmente erzeugt, und die App versucht, ändern die neuen Instanzen zu finden.

Sie müssen die Instanz Ihrer Fragmente in einer Liste speichern, um diesen Typ Ausnahme zu vermeiden.

Wenn Sie Ihren Code angeben, wo die Fragmente hinzugefügt werden, wird es klarer.