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

时间:2013-04-27 13:22:13

标签: android usb

我正在开发一个Android应用程序,它涉及使用片段显示Google地图。

以下是重现崩溃的步骤:

  1. 启动应用程序
  2. 使用片段打开活动
  3. 连接数据线
  4. 将USB模式切换为大容量存储
  5. 恢复申请
  6. 应用程序崩溃
  7. 崩溃的日志如下:

    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,但没有任何帮助。存储全局变量的整个类被杀死。有趣的是,当我在没有片段的活动中遵循相同的步骤时,我的应用程序不会崩溃。

1 个答案:

答案 0 :(得分:0)

尝试保存片段状态。

这可以使用片段

的“onSaveInstance”来完成

您也可以尝试为片段设置setRetainInstance(true)。

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