Moja aplikacja nadal zgłasza ten problem na wielu platformach Android (4.1, 4.0.4, 2.3.6 ...). Ale nie mogłem odtworzyć tego problemu na moim telefonie. Mam wyszukiwane przez Google ten problem, ale ślad stosu nie jest taki sam jak mój.IllegalStateException na FragmentManager
Czy ktoś wie, jak to się dzieje? I jak temu zapobiec? Lub jak mogę odtworzyć ten błąd? Dziękuję. ślad
Stos:
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1327)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1338)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
at android.support.v4.app.FragmentTabHost.onAttachedToWindow(FragmentTabHost.java:278)
at android.view.View.dispatchAttachedToWindow(View.java:12064)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2707)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1339)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1131)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4611)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
at android.view.Choreographer.doCallbacks(Choreographer.java:555)
at android.view.Choreographer.doFrame(Choreographer.java:525)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4898)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
at dalvik.system.NativeStart.main(Native Method)
-------------------- Edycja --------------- -----
Do Jonathan:
Mam dwa fragmenty. I tylko jeden fragment zastępuje wywołanie zwrotne , a kody są jak poniżej. I nie zastępuję innych wywołań zwrotnych po . Kolejne wywołanie zwrotne, które nadpisuję, to wywołanie zwrotne onResume
, kody też są poniżej.
Fragment:
@Override
public void onPause() {
super.onPause();
if (mView instanceof MyView) {
MyView my = (MyView) mView;
my.onPause();
}
}
@Override
public void onResume() {
super.onResume();
if (mView instanceof MyView) {
MyView my = (MyView) mView;
my.onResume();
}
}
MyView:
public void onPause() {
pause = true;
}
public void onResume() {
pause = false;
if (mDialog != null && mDialog.isShowing()) {
mDialog.dismiss();
mDialog = null;
}
}
ja również śledzić kody FragmentActivity
/FragmentManager
, wydaje się, jeżeli onAttachedToWindow()
być wywołana przed onPostResume()
, to problem będzie zdarzyć. Czy to możliwe, aby onAttachedToWindow()
było wywoływane przed onPostResume()
?
Czy robisz coś w wywołania zwrotne dla OnPause() lub cokolwiek później w cyklu Fragment? – Jonathan
Najprawdopodobniej problem spowodowany przez obrót ekranu i 'onSaveInstanceState'. Sprawdź linię 'FragmentTabHost.onAttachedToWindow': 278. Ponadto, jeśli możesz podać kod dla' FragmentTabHost'. – LuckyMe
@LuckyMe FragmentTabHost jest częścią źródła Androida, a nie czymś, co ten użytkownik zaimplementował. – Jonathan