2011-05-12 154 views
0

如何正确处理屏幕方向更改在android中?ANDROID屏幕方向更改

任何人都可以帮我解决这个问题吗?

我总是得到这样的错误:

05-12 07:20:38.223: ERROR/AndroidRuntime(410): FATAL EXCEPTION: main 
05-12 07:20:38.223: ERROR/AndroidRuntime(410): java.lang.RuntimeException: Unable to destroy activity {com.loginpage/com.loginpage.MainActivity}: java.lang.NullPointerException 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3655) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3673) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3789) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.access$2400(ActivityThread.java:125) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2037) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at android.os.Looper.loop(Looper.java:123) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at dalvik.system.NativeStart.main(Native Method) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410): Caused by: java.lang.NullPointerException 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at com.loginpage.MainActivity.storePreferences(MainActivity.java:80) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at com.loginpage.MainActivity.onDestroy(MainActivity.java:29) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3642) 
05-12 07:20:38.223: ERROR/AndroidRuntime(410):  ... 12 more 
+0

您使用的是“服务”还是“光标”? – 2011-05-12 07:30:28

回答

0

你应该张贴的代码,反正堆栈跟踪告诉你很多:

的Java在MainActivity.storePreferences空指针异常(MainActivity.java: 80)

调试/检查你的代码..

4

at com.loginpage.MainActivity.storePreferences(MainActivity.java:80)

崩溃且发生MainActivity的第80行。

为避免你的活动娱乐添加到您的清单文件

android:configChanges="keyboardHidden|orientation" 

,这对活动

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    setContentView(R.layout.myLayout); 
} 
+0

我在我的布局中有一个EditText视图,我使用了setContentView(R.layout.myLayout),但是当屏幕方向改变时,我在EditText里面输入的字符被删除了。 – CMA 2011-05-12 08:06:18

+0

抱歉我的天真问题..我完全新的Android ...我真的很感激你的帮助.. :) – CMA 2011-05-12 08:08:37

+1

使用[this](http://stackoverflow.com/questions/5657828/edittext-is-losing-users-input-when-rotating-android-phone/5657992#5657992) – Reno 2011-05-12 08:14:04

2

将这个

android:screenOrientation="sensor" 
android:configChanges="keyboardHidden|orientation" 
上的活动的声明

在AndroidManifest.xml中是这样的:

<activity android:name=".activity.activityname" 
        android:label="@string/app_name" 
        android:theme="@android:style/Theme.Light" 
        android:windowSoftInputMode="adjustPan" 
        android:screenOrientation="sensor" 
        android:configChanges="keyboardHidden|orientation"> 
     </activity> 
+0

谢谢,这也帮助我很多我的应用程序。 – 2012-10-05 16:01:13