在
Android模拟器上运行项目时,我在getApplicationContext上面对异常,因为java.lang.NullPointerException.请帮我解决这个问题.
07-19 15:08:07.811: D/AndroidRuntime(366): Shutting down VM 07-19 15:08:07.811: W/dalvikvm(366): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 07-19 15:08:07.841: E/AndroidRuntime(366): FATAL EXCEPTION: main 07-19 15:08:07.841: E/AndroidRuntime(366): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.TfsMutualFund/org.TfsMutualFund.loading}: java.lang.NullPointerException 07-19 15:08:07.841: E/AndroidRuntime(366): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 07-19 15:08:07.841: E/AndroidRuntime(366): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 07-19 15:08:07.841: E/AndroidRuntime(366): Caused by: java.lang.NullPointerException 07-19 15:08:07.841: E/AndroidRuntime(366): at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:100) 07-19 15:08:07.841: E/AndroidRuntime(366): at org.TfsMutualFund.loading.<init>(loading.java:23)
AndroidManifest.xml中
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.TfsMutualFund"> <uses-sdk android:targetSdkVersion="8" /> <application android:name=".globalAdapter" android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".loading" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar" android:configChanges="orientation|keyboard|keyboardHidden"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".TFSManinActivity" android:configChanges="orientation|keyboard|keyboardHidden"/> </application>
loading.java
package org.TfsMutualFund; public class loading extends Activity{ private static ArrayAdapter<String> adapter; private globalAdapter adpt = ((globalAdapter)getApplicationContext()); private String ServicePath = adpt.getServicePath(); private String ServiceName = adpt.getServiceName(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.loading); if(isOnline()) new AsyncLoad().execute(); else
解决方法
不要在OnCreate()之前初始化它,你不能在那里得到Context,在onCreate()中做.
private globalAdapter adpt; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.loading); adpt = ((globalAdapter)getApplicationContext()); ... }