Android应用程序在USB模式间切换时崩溃

问题描述:

我正在开发一个Android应用程序,其中涉及使用碎片显示Google地图。Android应用程序在USB模式间切换时崩溃

下面是重现崩溃以下步骤:

  1. 启动应用程序
  2. 打开使用片段
  3. 连接数据线
  4. 开关USB模式为大容量存储活性
  5. 恢复的应用程序
  6. 应用程序崩溃

日志坠机如下:

04-27 18:45:10.289: E/AndroidRuntime(19982): FATAL EXCEPTION: main 
04-27 18:45:10.289: E/AndroidRuntime(19982): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.octanetech.cortes/com.octanetech.cortes.MapActivity}: java.lang.NullPointerException 
04-27 18:45:10.289: E/AndroidRuntime(19982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at android.os.Looper.loop(Looper.java:123) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at java.lang.reflect.Method.invokeNative(Native Method) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at java.lang.reflect.Method.invoke(Method.java:521) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at dalvik.system.NativeStart.main(Native Method) 
04-27 18:45:10.289: E/AndroidRuntime(19982): Caused by: java.lang.NullPointerException 
04-27 18:45:10.289: E/AndroidRuntime(19982): at com.octanetech.cortes.MapActivity.displayPlaces(MapActivity.java:644) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at com.octanetech.cortes.MapActivity.onCreate(MapActivity.java:158) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-27 18:45:10.289: E/AndroidRuntime(19982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
04-27 18:45:10.289: E/AndroidRuntime(19982): ... 11 more 
04-27 18:45:10.309: W/ActivityManager(2466): Force finishing activity com.octanetech.cortes/.MapActivity 

我使用三星Galaxy S设备。

我使用静态变量作为全局变量。我也切换到this,但没有任何帮助。全局变量存储在其中的整个类正在被杀死。有趣的是,当我在没有碎片的活动中遵循相同的步骤时,我的应用程序不会崩溃。

尝试保存您的分段状态。

这可以通过使用片段

的“onSaveInstance”你也可以尝试的片段setRetainInstance(真)来完成。

当您在USB模式之间切换时,有时会重新创建活动并因此创建片段。

+0

不工作。我实际上使用FragmentActivity。 – 2013-04-29 13:05:55