更改布局方向时丢失的信息

时间:2012-08-01 08:30:38

标签: java android bluetooth orientation

我在java中有一个带有蓝牙连接的android应用程序,当我更改布局方向(我创建了layout-land文件夹)时,布局正确更改,但是我丢失的信息,收到的所有消息都是当我尝试发送消息时它崩溃了,它向我显示了这个异常,就像连接丢失了但它仍然在运行:

D/AndroidRuntime(29591): Shutting down VM
08-01 10:13:04.499: W/dalvikvm(29591): threadid=1: thread exiting with uncaught exception (group=0x2aac8578)
08-01 10:13:04.519: E/AndroidRuntime(29591): FATAL EXCEPTION: main
08-01 10:13:04.519: E/AndroidRuntime(29591): java.lang.IllegalStateException: Could not execute method of the activity
08-01 10:13:04.519: E/AndroidRuntime(29591):    at android.view.View$1.onClick(View.java:2168)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at android.view.View.performClick(View.java:2552)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at android.widget.CompoundButton.performClick(CompoundButton.java:103)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at android.view.View$PerformClick.run(View.java:9229)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at android.os.Handler.handleCallback(Handler.java:587)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at android.os.Looper.loop(Looper.java:138)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at android.app.ActivityThread.main(ActivityThread.java:3701)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at java.lang.reflect.Method.invokeNative(Native Method)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at java.lang.reflect.Method.invoke(Method.java:507)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at dalvik.system.NativeStart.main(Native Method)
08-01 10:13:04.519: E/AndroidRuntime(29591): Caused by: java.lang.reflect.InvocationTargetException
08-01 10:13:04.519: E/AndroidRuntime(29591):    at java.lang.reflect.Method.invokeNative(Native Method)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at java.lang.reflect.Method.invoke(Method.java:507)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at android.view.View$1.onClick(View.java:2163)
08-01 10:13:04.519: E/AndroidRuntime(29591):    ... 12 more
08-01 10:13:04.519: E/AndroidRuntime(29591): Caused by: java.lang.NullPointerException
08-01 10:13:04.519: E/AndroidRuntime(29591):    at com.example.bluetooth.cochee.BluetoothConexion.escribir(BluetoothConexion.java:350)
08-01 10:13:04.519: E/AndroidRuntime(29591):    at com.example.bluetooth.cochee.AndroidTabsActivity.Comprobar5(AndroidTabsActivity.java:554)
08-01 10:13:04.519: E/AndroidRuntime(29591):    ... 15 more
08-01 10:13:07.429: I/Process(29591): Sending signal. PID: 29591 SIG: 9
08-01 10:13:09.849: W/KeyCharacterMap(29760): Can't open keycharmap file
08-01 10:13:09.849: W/KeyCharacterMap(29760): Error loading keycharmap file '/system/usr/keychars/clearpad.kcm.bin'. hw.keyboards.65541.devname='clearpad'
08-01 10:13:09.849: W/KeyCharacterMap(29760): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

3 个答案:

答案 0 :(得分:1)

每次进行方向更改时,您的活动都会重新启动,因此您需要在其生命周期方法中保存活动的状态:

http://developer.android.com/reference/android/app/Activity.html

答案 1 :(得分:1)

配置更改后,您的活动将被重新创建,因此不得保存活动链接(您有内存泄漏)。你也应该在onDestroy之前保存信息(你应该使用onSafeConfigurationChanges方法)。

答案 2 :(得分:0)

每次更改方向时,必须将所有信息保存在onPause()方法中并在onResume()中恢复。因为android重新创建了所有活动。

阅读此http://developer.android.com/reference/android/app/Activity.html