Closed keithzg closed 11 years ago
Interestingly, if it's opened in landscape, it's fine, but it then crashes when rotated into portrait.
Perhaps using http://developer.android.com/reference/android/app/Application.html would alleviate this? My usage of countdowntimer (and how it directly changes the text each tick) might complicate this, however. Hmm.
A helpful co-worker of mine has chimed in, suspecting that the MainActivity.this.* calls are the culprit; as soon as the app is rotated, the views are destroyed and recreated, but each MainActivity.this.* is still referencing what is now a no longer existing instance. Hence, Kaboom. Hmm x2 . . .
Nope, it isn't the MainActivity.this.* calls, as taking them out still has crashes.
03-25 16:38:57.882: E/AndroidRuntime(11652): java.lang.RuntimeException: Unable to start activity ComponentInfo{ca.keithzg.paulmiller.is.offline/ca.keithzg.paulmiller.is.offline.MainActivity}: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment ca.keithzg.paulmiller.is.offline.MainActivity$MyFragmentPagerAdapter$Fragment1: make sure class name exists, is public, and has an empty constructor that is public
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3692)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.app.ActivityThread.access$700(ActivityThread.java:141)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1240)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.os.Handler.dispatchMessage(Handler.java:99)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.os.Looper.loop(Looper.java:137)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.app.ActivityThread.main(ActivityThread.java:5041)
03-25 16:38:57.882: E/AndroidRuntime(11652): at java.lang.reflect.Method.invokeNative(Native Method)
03-25 16:38:57.882: E/AndroidRuntime(11652): at java.lang.reflect.Method.invoke(Method.java:511)
03-25 16:38:57.882: E/AndroidRuntime(11652): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-25 16:38:57.882: E/AndroidRuntime(11652): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-25 16:38:57.882: E/AndroidRuntime(11652): at dalvik.system.NativeStart.main(Native Method)
03-25 16:38:57.882: E/AndroidRuntime(11652): Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment ca.keithzg.paulmiller.is.offline.MainActivity$MyFragmentPagerAdapter$Fragment1: make sure class name exists, is public, and has an empty constructor that is public
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.support.v4.app.Fragment.instantiate(Fragment.java:405)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.support.v4.app.FragmentState.instantiate(Fragment.java:97)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1767)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:208)
03-25 16:38:57.882: E/AndroidRuntime(11652): at ca.keithzg.paulmiller.is.offline.MainActivity.onCreate(MainActivity.java:47)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.app.Activity.performCreate(Activity.java:5104)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
03-25 16:38:57.882: E/AndroidRuntime(11652): ... 12 more
03-25 16:38:57.882: E/AndroidRuntime(11652): Caused by: java.lang.InstantiationException: can't instantiate class ca.keithzg.paulmiller.is.offline.MainActivity$MyFragmentPagerAdapter$Fragment1; no empty constructor
03-25 16:38:57.882: E/AndroidRuntime(11652): at java.lang.Class.newInstanceImpl(Native Method)
03-25 16:38:57.882: E/AndroidRuntime(11652): at java.lang.Class.newInstance(Class.java:1319)
03-25 16:38:57.882: E/AndroidRuntime(11652): at android.support.v4.app.Fragment.instantiate(Fragment.java:394)
03-25 16:38:57.882: E/AndroidRuntime(11652): ... 19 more
Ah I know this bug - totally my fault. When a fragment is recreated it tries to use a call like new RandomFragment()
, if there isn't one explicitly defined the app will crash. I'm halfway through an update, I'll roll the fix into that!
Seems fixed now; excellent.
At least on my Nexus 7, app crashes when rotated into landscape.