2012-05-07 2 views
2

Сегодня я получил сообщение NullPointerException. Я не могу воспроизвести это исключение NullPointerException на своих телефонах.NullPointerException отчет от магазина игр

Я действительно не могу найти то, что вызывает исключение NullPointerException.

Вот отчет:

java.lang.NullPointerException 
at com.dsf.sdf.ManActivity$25.onTouch(ManActivity.java:445) 
at android.view.View.dispatchTouchEvent(View.java:3762) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
at com.android.internal.policy.impl.PhoneWindow$DecorView. 
    (PhoneWindow.java:1674) 
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1109) 
at android.app.Activity.dispatchTouchEvent(Activity.java:2086) 
at com.android.internal.policy.impl.PhoneWindow$DecorView. 
    dispatchTouchEvent(PhoneWindow.java:1658) 
at android.view.ViewRoot.handleMessage(ViewRoot.java:1785) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4627) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller. 
    run(ZygoteInit.java:876) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) 
at dalvik.system.NativeStart.main(Native Method) 

Вот код из строки 936:

sdff.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      sdff.setBackgroundDrawable(getResources(). 
       getDrawable(R.drawable.pressed)); 
     } 

     else if (event.getAction() == MotionEvent.ACTION_UP) { 
      if (play != null) { 
       play.reset(); 
       play.release(); 
      } 

      play = MediaPlayer.create(ManActivity.this, 
       R.raw.sdff); 
      play.start(); 
      sdff.setBackgroundDrawable(getResources(). 
       getDrawable(R.drawable.button)); 
     } 

     else if (event.getAction() == MotionEvent.ACTION_CANCEL) { 
      sdff.setBackgroundDrawable(getResources(). 
       getDrawable(R.drawable.button)); 
     } 

     return false; 
    } 
}); 

Это простая кнопка играет которым звук при нажатии.

Так что же вызывает исключение?

Edit:

Code at line 445: 

play = MediaPlayer.create(ManActivity.this, 
    R.raw.bf); 
play.start(); 
auth.setBackgroundDrawable(getResources().getDrawable(
    R.drawable.button)); 
+2

Какой оператор в строке 445 в ManActivity.java? – Rajesh

+0

Hm,' MediaPlayer.create' может возвращать 'null', если он терпит неудачу, что звучит нечетно так как ваш звук упакован как ресурс. – Jens

+1

Итак, как вы исправите файл Mediaplayer.create как null? Просто с попыткой поймать? Вы правы в том, что звук упакован как ресурс, но у меня есть другой отчет (второй). Может ли он быть надежным на телефоне? Например: он отлично работает на новых устройствах samsung, но сбой на устройстве htc из-за ошибки nullpointerexception? Возможно ли это? – MeesterPatat

ответ

1

Раджеш правильно, Что код @ ManActivity.java:445 (строка 445). Если это код, его также можно использовать в качестве вашего сенсорного переключателя.

sdff.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       // dont use sdff, use v param that is passed in. 
       v.setBackgroundDrawable(getResources() 
         .getDrawable(R.drawable.pressed)); 
      } else if (event.getAction() == MotionEvent.ACTION_UP) { 
       if (play != null) { 
        play.reset(); 
        play.release(); 
       } 
       play = MediaPlayer.create(ManActivity.this, 
         R.raw.sdff); 

       play.start(); 
       v.setBackgroundDrawable(getResources() 
         .getDrawable(R.drawable.button)); 
      } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { 
       v.setBackgroundDrawable(getResources() 
         .getDrawable(R.drawable.button)); 
      } 
      return false; 
     } 
    }); 

В любом случае, вы пытались отлаживать приложение вместо этого? (Щелкните правой кнопкой мыши Project в проводнике пакетов> Debug As> Android Application). то это переключится на перспективу отладки. Найдите панель точек останова (Window> show view> Breakpoints). Нажмите кнопку «Добавить контрольную точку добавления JAva» (ее «J» с «!»). Введите «Null» и дважды щелкните по NullPointerException », который появляется.

+0

Я пытался отлаживать, я сделал именно то, что вы написали, но что м. Предположим, что нужно делать/видеть сейчас? Должен ли я просто работать с приложением, пока он не сработает? – MeesterPatat

Смежные вопросы