2014-02-18 2 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}을 (를) 시작할 수 없습니다 Eclipse에서 다음을 실행할 때이 오류가 발생했습니다. 왜이 오류가 발생합니까? 전혀 모르겠습니다. 나는이 사이트에서 둘러 보았고, 많은 사람들이 여러 가지 이유 때문에이 오류가 발생하는 것으로 보인다. 치명적인 예외 : 주요 java.lang.RuntimeException가 : java.lang.NullPointerException이 내가 할</p> <p>: 활동을

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 귀하의 방법은 코드 스테핑 디버거가 도입되기 전에 디버깅하는 가장 좋은 방법이었습니다. 필자는 디버거를 배우는 것이 어려웠으므로 코드를 줄 단위로 검사하는 문제를 전적으로 해결하는 데 익숙했지만 일단 배웠다면 디버깅이 훨씬 효율적이었습니다. 나는 이클립스 디버거 (또는 당신이 사용하는 자바 애플리케이션)를 사용하는 방법에 대해 인터넷 검색을 제안하고 그것을 위에서 아래로 배운다. – Jacksonkr

2

귀하의 NullPointerException은 Wire.java의 20 번째 라인에 있습니다. 액세스하기 전에 해당 행의 모든 ​​객체가 초기화되었는지 확인하십시오.

+0

감사합니다. LogCat을 사용하는 데 익숙하지 않았습니다. – user3325385

관련 문제