마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

로그켓분석하는방법과 저의 로그켓을 보고 분석을 예로 써주세요

0 추천
09-20 11:13:13.780: E/AndroidRuntime(509): FATAL EXCEPTION: main
09-20 11:13:13.780: E/AndroidRuntime(509): java.lang.NullPointerException
09-20 11:13:13.780: E/AndroidRuntime(509):  at com.flysky.GameView.onTouchEvent(GameView.java:129)
09-20 11:13:13.780: E/AndroidRuntime(509):  at android.view.View.dispatchTouchEvent(View.java:3766)
09-20 11:13:13.780: E/AndroidRuntime(509):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
09-20 11:13:13.780: E/AndroidRuntime(509):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
09-20 11:13:13.780: E/AndroidRuntime(509):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
09-20 11:13:13.780: E/AndroidRuntime(509):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
09-20 11:13:13.780: E/AndroidRuntime(509):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
09-20 11:13:13.780: E/AndroidRuntime(509):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
09-20 11:13:13.780: E/AndroidRuntime(509):  at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
09-20 11:13:13.780: E/AndroidRuntime(509):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655)
09-20 11:13:13.780: E/AndroidRuntime(509):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1785)
09-20 11:13:13.780: E/AndroidRuntime(509):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-20 11:13:13.780: E/AndroidRuntime(509):  at android.os.Looper.loop(Looper.java:123)
09-20 11:13:13.780: E/AndroidRuntime(509):  at android.app.ActivityThread.main(ActivityThread.java:4627)
09-20 11:13:13.780: E/AndroidRuntime(509):  at java.lang.reflect.Method.invokeNative(Native Method)
09-20 11:13:13.780: E/AndroidRuntime(509):  at java.lang.reflect.Method.invoke(Method.java:521)
09-20 11:13:13.780: E/AndroidRuntime(509):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-20 11:13:13.780: E/AndroidRuntime(509):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-20 11:13:13.780: E/AndroidRuntime(509):  at dalvik.system.NativeStart.main(Native Method)

 

 

 

 

 

 

 

 

 

인대요 머가 잘못된지 모르겠네요 찾아보니까 소스도 올려달라니까 동봉합니다.

public class GameView extends SurfaceView implements Callback {
 GameThread mThread;
 SurfaceHolder mHolder;
 
   //생성자
 public GameView(Context context, AttributeSet attrs) {
  super(context, attrs);
  // TODO Auto-generated constructor stub
  SurfaceHolder holder = getHolder();
  holder.addCallback(this);
  mThread = new GameThread(holder, context);
  
  setFocusable(true);
 }

 @Override
 public void surfaceChanged(SurfaceHolder holder, int format, int width,
   int height) {
  // TODO Auto-generated method stub

 }

 @Override
 public void surfaceCreated(SurfaceHolder holder) {
  // TODO Auto-generated method stub
  mThread.start();

 }

 @Override
 public void surfaceDestroyed(SurfaceHolder holder) {
  // TODO Auto-generated method stub

 }
//-----------------------------------------
//Thread
//-----------------------------------------
 class GameThread extends Thread{
  SurfaceHolder mHolder;
  int width, height;   //실제화면 크기
  int x, y, cx, cy;    //캐릭터좌표, 캐릭터크기
  
  int sx, sy;          //캐릭터 방향
  int num;             //캐릭터 이미지 번호
  int px, py, psx, psy;//구름 좌표, 속도
  int oy;
  int x1, y1;
  
  Bitmap imgBack;
  Bitmap man[] = new Bitmap[2];
  Bitmap icon1;
  Bitmap icon2;
  
  
  //----
  //생성자
  //----
  public GameThread(SurfaceHolder holder, Context context){
   mHolder = holder;
   Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
   
   width = display.getWidth();
   height = display.getHeight();
   
   man[0] = BitmapFactory.decodeResource(getResources(), R.drawable.man);
   cx=man[0].getWidth();
   cy=man[0].getHeight();
   x = width/2;
   y = 200;
   oy= width-150;
   
   
   
   imgBack = BitmapFactory.decodeResource(getResources(), R.drawable.sea);
   imgBack = Bitmap.createScaledBitmap(imgBack, width, height, false);
   
   icon1 = BitmapFactory.decodeResource(getResources(), R.drawable.icon1);
   icon2 = BitmapFactory.decodeResource(getResources(), R.drawable.icon2);
  }
  
  public void MoveMan(int x1, int y1){
   if(width/2 < x1){
    x+=3;
   }else{
    x-=3;
   }
  }
  
  public void run(){
   Canvas canvas = null;
   while(true){
    canvas = mHolder.lockCanvas();
    try{
     synchronized(mHolder){
      canvas.drawBitmap(imgBack, 0, 0, null);
      canvas.drawBitmap(man[0], x-cx, y-cy, null);
      canvas.drawBitmap(icon1, 0, 500, null);
      canvas.drawBitmap(icon2, oy, 500, null);
      
     }
    }finally{
     if(canvas != null)
      mHolder.unlockCanvasAndPost(canvas);
    }
   }
  }
 }
 
 @Override
 public boolean onTouchEvent(MotionEvent event){
  mThread.x1 = (int)event.getX();
  mThread.y1 = (int)event.getY();
  
  if (event.getAction() == MotionEvent.ACTION_DOWN){
   synchronized(mHolder){
   mThread.MoveMan(mThread.x1 ,mThread.y1);

   }
  }
  return true;
 }
}

부탁드립니다 항상 보고 있어서 댓글달리면 바로 뛰어오겠습니다.

부탁드릴께요
느낌표시 (460 포인트) 님이 2013년 9월 20일 질문

1개의 답변

0 추천

09-20 11:13:13.780: E/AndroidRuntime(509): FATAL EXCEPTION: main
09-20 11:13:13.780: E/AndroidRuntime(509): java.lang.NullPointerException
09-20 11:13:13.780: E/AndroidRuntime(509):  at com.flysky.GameView.onTouchEvent(GameView.java:129)

 

129번째 줄 객체가 NULL 들어가있는데 사용하신듯한데 129번줄이 뭘가요;;
뭐 처음문제때문에 밑에 쭉 에러뜨는거라 생각합니다. 경험상 얻은 지식이라 정확하진 않습...;;

익명사용자 님이 2013년 9월 20일 답변
아 129번줄은 동기화를 사용한것인데요
synchronized(mHolder){ 이부분입니다
...