2012-07-19 17 views
5

在Android模拟器上运行项目时,我在getApplicationContext处遇到java.lang.NullPointerException的异常。请帮助我解决此问题。在启动适配器时在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 
+0

您可以使用“this”而不是在您的加载活动中调用getApplicationContext() – pixelscreen 2012-07-19 09:52:01

+0

不要发布所有内容,只要在发生错误的地方发布代码块! – 2012-07-19 09:52:05

+0

并且在onCreate()中做这些初始化,而不是在那之前! – pixelscreen 2012-07-19 09:55:19

回答

11

不要在OnCreate()之前初始化它,你不能在那里获得Context,在onCreate()

private globalAdapter adpt; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.loading); 
    adpt = ((globalAdapter)getApplicationContext()); 
    ... 
} 
+1

反对票的理由是什么? – 2012-07-19 09:58:50

+0

谢谢拉利特。但是,在OnCreate方法中初始化它后,它显示相同的错误。 – Mahavir 2012-07-19 10:21:56

+0

您是否删除了'private globalAdapter adpt =((globalAdapter)getApplicationContext());'作为全局的? – 2012-07-19 10:24:48

2

不要在之前的onCreate初始化下面,就让意见得到他们的IDS第一

private globalAdapter adpt = ((globalAdapter)getApplicationContext()); 
private String ServicePath = adpt.getServicePath(); 
private String ServiceName = adpt.getServiceName(); 

2.只是声明他们....

private globalAdapter adpt; 
private String ServicePath; 
private String ServiceName; 

3.因为当活动没有形成时,你怎么能得到Con文本添加到该活动,导致您正在使用getApplicationContext()获取当前活动上下文。

+0

谢谢Xitij,但即使在Oncreate()方法初始化它后,它显示相同的错误.. – Mahavir 2012-07-19 10:20:55

相关问题