मुझे अपने ऐप के साथ निम्नलिखित अपवाद मिल रहा है। मेरा मानना है कि ऐसा तब होता है जब उपयोगकर्ता लंबे समय तक ऐप छोड़ देता है और उसके बाद वापस आता है। मैं इसे दोहराने में असमर्थ हूं हालांकि यह मेरे क्रैश लॉग में बहुत कुछ दिखा रहा है। मुझे नहीं पता कि यह क्यों हो रहा है इसलिए किसी भी सुझाव की सराहना की जाती है।सहेजे गए राज्य अपवाद
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // line 235
मेरे onSaveInstanceState() बहुत सरल है::
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.MyActivity}: java.lang.ArrayIndexOutOfBoundsException: length=3; index=-1
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2202)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2237)
at android.app.ActivityThread.access$600(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:4974)
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:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=-1
at java.util.ArrayList.get(ArrayList.java:306)
at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1764)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:198)
at com.myapp.MyActivity.onCreate(MyActivity.java:235)
at android.app.Activity.performCreate(Activity.java:4538)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2158)
... 11 more
लाइन 235 निम्नलिखित है
@Override
public void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putInt("id1", id1);
state.putInt("id2", id2);
state.putInt("id3", id3);
state.putInt("id4", id4);
}
क्योंकि ID1 आईडी 2, ID3 में से एक, id4 जब -1 के बराबर है:
पूर्णता के लिए के लिए, यह मैं
onSaveInstanceState(final Bundle outstate)
में क्या किया है है आप इसे बचा रहे हैं? – Blundellउन्हें कभी भी -1 नहीं होना चाहिए, हालांकि, मैं int मामलों के मूल्य पर विश्वास नहीं करता हूं। – Nick
क्या आप निश्चित हैं कि रेखा 235 वह रेखा है। जिस लॉग से आपको लॉग मिला है वह वही है जो आप जांच रहे हैं? – Blundell