2014-02-18 80 views
1
02-18 21:26:32.055: E/AndroidRuntime(1529): FATAL EXCEPTION: main 
02-18 21:26:32.055: E/AndroidRuntime(1529): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yellomecha.pianobirds/com.yellomecha.pianobirds.Main}: java.lang.NullPointerException 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at android.os.Looper.loop(Looper.java:137) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at java.lang.reflect.Method.invoke(Method.java:525) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at dalvik.system.NativeStart.main(Native Method) 
02-18 21:26:32.055: E/AndroidRuntime(1529): Caused by: java.lang.NullPointerException 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at com.yellomecha.pianobirds.Wire.<init>(Wire.java:20) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at com.yellomecha.pianobirds.Game.<init>(Game.java:24) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at com.yellomecha.pianobirds.Main.onCreate(Main.java:26) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at android.app.Activity.performCreate(Activity.java:5133) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
02-18 21:26:32.055: E/AndroidRuntime(1529):  ... 11 more 

开始活动ComponentInfo {com.yellomecha.pianobirds/com.yellomecha.pianobirds.Main}:显示java.lang.NullPointerException致命异常:主要了java.lang.RuntimeException:无法启动活动

我得到在Eclipse上运行以下错误时出现此错误 为什么我得到这个错误,我不知道。我环顾这个网站,似乎很多人因各种各样的原因而出现这个错误。

public class Main extends Activity 
{ 

private static Game game; 
public static Handler updateHandler = new Handler() 
{ 
    public void handleMessage(Message msg) 
    { 
     game.update(); 
     game.invalidate(); 
     super.handleMessage(msg); 
    } 
}; 

/** On Create **/ 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    game = new Game(this); 
    //LinearLayout layout = (LinearLayout) findViewById(R.layout.activity_main);; 
    //layout.setOrientation(LinearLayout.HORIZONTAL); 

    setContentView(game); 
    Thread mainThread = new Thread(new UpdateThread()); 
    mainThread.start(); 
} 

public class UpdateThread implements Runnable 
{ 
    @Override 
    public void run() 
    { 
     while(true) 
      Main.updateHandler.sendEmptyMessage(0); 
    } 

} 

} 

游戏类

public class Game extends View 
{ 
private Bitmap birdImage; 
private Paint paint; 
private Wire top,bottom; 

public Game(Context context) 
{ 
    super(context); 
    birdImage = Bitmap.createBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.toucan)); 
    paint = new Paint(); 
    paint.setStrokeWidth(5); 
    paint.setColor(Color.BLACK); 
    top = new Wire(getWidth(),(float)getHeight()/3, true); 
    bottom = new Wire(getWidth(), (float)getHeight()*2/3, false); 

} 

//called every frame 
protected void onDraw(Canvas canvas) 
{ 
    canvas.drawBitmap(birdImage, getWidth(), getHeight(), paint); 
    top.draw(canvas, paint); 
    bottom.draw(canvas, paint); 
} 

public void update() 
{ 

} 

} 

和清单文件

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.yellomecha.pianobirds" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="19" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.yellomecha.pianobirds.Main" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

+0

你在哪一行得到异常? – donfuxx

+0

这当然不是整个堆栈跟踪,是吗? – fge

+0

请发布完整的LogCat跟踪,它将帮助我们发现错误 – user2340612

回答

-1

将逐行

log.i(TAG,"OK1"); 
... code line 
log.i(TAG,"OK2"); 
... code line 
log.i(TAG,"OK3"); 
. 
. 
. 

找到哪一行代码有NULL错误。

+1

这不是正确的调试方式。您可以简单地查看完整的LogCat跟踪以发现导致NPE的行。 – user2340612

+0

我正在使用此方法并且它很简单 –

+0

@OmidOmidi在引入代码步进调试器之前,您的方法是一种很好的调试方法。我以前只是单独排查像你的那样进行逐行检查的代码,因为很难了解调试器,但是一旦我了解到它们,调试就会更有效率。我建议谷歌搜索如何使用eclipse调试器(或任何你使用的Java应用程序),并从上到下学习它。 – Jacksonkr

2

您的NullPointerException在Wire.java的第20行。确保在访问它之前,该行上的每个对象都已初始化。

+0

谢谢,我还没有习惯使用LogCat – user3325385

相关问题