5
Ich bin mit einigen seltsamen Problem konfrontiert, während ich auf die Home-Taste von Android und beim Start neue Aktivität drücken.Erhalten Ausnahme als Fehler beim Speichern Zustand: aktiv Fragment hat gelöscht Index: -1, wenn ich nach Hause Taste des Android-Gerät drücken
Mein Stacktrace ist als
folgt05-13 18:06:21.182: E/FragmentManager(5674): Failure saving state: active Fragment{411d96d8} has cleared index: -1
05-13 18:06:21.182: E/FragmentManager(5674): Activity state:
05-13 18:06:22.032: E/ACRA(5674): ACRA caught a IllegalStateException exception for com.itgurussoftware.android.dineback. Building report.
05-13 18:06:27.732: E/ACRA(5674): com.itgurussoftware.android.dineback fatal error : Failure saving state: active Fragment{411d96d8} has cleared index: -1
05-13 18:06:27.732: E/ACRA(5674): java.lang.IllegalStateException: Failure saving state: active Fragment{411d96d8} has cleared index: -1
05-13 18:06:27.732: E/ACRA(5674): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1723)
05-13 18:06:27.732: E/ACRA(5674): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:546)
05-13 18:06:27.732: E/ACRA(5674): at android.app.Activity.performSaveInstanceState(Activity.java:1113)
05-13 18:06:27.732: E/ACRA(5674): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1185)
05-13 18:06:27.732: E/ACRA(5674): at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:2793)
05-13 18:06:27.732: E/ACRA(5674): at android.app.ActivityThread.handleStopActivity(ActivityThread.java:2851)
05-13 18:06:27.732: E/ACRA(5674): at android.app.ActivityThread.access$900(ActivityThread.java:123)
05-13 18:06:27.732: E/ACRA(5674): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1164)
05-13 18:06:27.732: E/ACRA(5674): at android.os.Handler.dispatchMessage(Handler.java:99)
05-13 18:06:27.732: E/ACRA(5674): at android.os.Looper.loop(Looper.java:137)
05-13 18:06:27.732: E/ACRA(5674): at android.app.ActivityThread.main(ActivityThread.java:4424)
05-13 18:06:27.732: E/ACRA(5674): at java.lang.reflect.Method.invokeNative(Native Method)
05-13 18:06:27.732: E/ACRA(5674): at java.lang.reflect.Method.invoke(Method.java:511)
05-13 18:06:27.732: E/ACRA(5674): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-13 18:06:27.732: E/ACRA(5674): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-13 18:06:27.732: E/ACRA(5674): at dalvik.system.NativeStart.main(Native Method)
und mein Code hinzufügen und entfernen Sie das Fragment als
folgt FragmentContainer fragContainer = container.get(container.size() - 1);
Fragment fragment = fragContainer.getFragment();
String tag = fragContainer.getTabName();
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
mTabHost.setCurrentTabByTag(tag);
if (!fragment.isAdded()) {
ft.remove(fragment);
}
if(container.size()>0)
container.remove(container.size() - 1);
ft.replace(R.id.realtabcontent, fragment);
ft.commitAllowingStateLoss();
Versuchte
- Support-Bibliothek aktualisiert
Versuchte überschreibt onSaveInstanceState als
@Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub if (outState != null) { super.onSaveInstanceState(outState); } }
einen bestimmten Grund haben Sie dies: 'if (fragment.isAdded()) {ft.remove (Fragment); } '. Ich würde vorschlagen, es zu entfernen. Wenn das Fragment bereits hinzugefügt wurde, wird 'ft.replace (R.id.realtabcontent, fragment);' dafür sorgen, dass es entfernt wird. Die gemeldete Ausnahme wird ausgelöst, wenn Sie das gleiche Fragment entfernen und hinzufügen. Es ist fixiert in 'ersetzen' Methode, die im Grunde No-Op. Überprüfen Sie diese [Bestätigungsnachricht] (https://android.googlesource.com/platform/frameworks/support/+/5506618c80a292ac275d8b0c1046b446c7f58836%5E%21). –
ok nach Ihrem Kommentar Ich habe diesen Code entfernt und versucht, aber das Problem bleibt gleich. – NullPointerException
Warum verwenden Sie 'commitAllowingStateLoss()' anstelle von 'commit()'? – Dmide