2009-12-20 4 views
0

Je suis en train de développer une application de fichiers multimédias conçue pour lire les sons stockés dans mon dossier brut. Il y a environ 32 sons en tout. Et ce que je suis faire le clic de chaque bouton:Gestion de l'exception dans une application MediaFile

Button btnGrowUp = (Button) this.findViewById(R.id.GrowUp); 
btnGrowUp.setOnClickListener(btnGrowUpListener); 

private OnClickListener btnGrowUpListener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     //Toast.makeText(getBaseContext(), "Grow Up audio file is being played", Toast.LENGTH_SHORT).show(); 

     MediaPlayer mp = MediaPlayer.create(MainScreen.this, R.raw.growup); 
     mp.start(); 
    } 
}; 

je reçois une exception d'exécution disant « app arrête de façon inattendue » avec les messages de suivi dans ma fenêtre logcat:

12-19 12:33:05.420: WARN/dalvikvm(699): threadid=3: thread exiting 
with uncaught exception (group=0x4000fe70) 
12-19 12:33:05.441: ERROR/AndroidRuntime(699): Uncaught handler: 
thread main exiting due to uncaught exception 
12-19 12:33:05.460: ERROR/AndroidRuntime(699): 
java.lang.NullPointerException 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
com.myapps.media.MainScreen$8.onClick(MainScreen.java:244) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.view.View.performClick(View.java:2179) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.view.View.onTouchEvent(View.java:3828) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.widget.TextView.onTouchEvent(TextView.java:6291) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.view.View.dispatchTouchEvent(View.java:3368) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
com.android.internal.policy.impl.PhoneWindow 
$DecorView.superDispatchTouchEvent(PhoneWindow.java:1707) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent 
(PhoneWindow.java:1197) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.app.Activity.dispatchTouchEvent(Activity.java:1993) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
com.android.internal.policy.impl.PhoneWindow 
$DecorView.dispatchTouchEvent(PhoneWindow.java:1691) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.view.ViewRoot.handleMessage(ViewRoot.java:1525) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.os.Handler.dispatchMessage(Handler.java:99) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.os.Looper.loop(Looper.java:123) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
android.app.ActivityThread.main(ActivityThread.java:3948) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
java.lang.reflect.Method.invokeNative(Native Method) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
java.lang.reflect.Method.invoke(Method.java:521) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run 
(ZygoteInit.java:782) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 
12-19 12:33:05.460: ERROR/AndroidRuntime(699):  at 
dalvik.system.NativeStart.main(Native Method) 
12-19 12:33:05.520: INFO/Process(563): Sending signal. PID: 699 SIG: 3 
12-19 12:33:05.520: INFO/dalvikvm(699): threadid=7: reacting to signal 
3 
12-19 12:33:05.601: INFO/dalvikvm(699): Wrote stack trace to '/data/ 
anr/traces.txt' 
12-19 12:33:05.982: INFO/ARMAssembler(563): generated 
scanline__00000077:03515104_00000000_00000000 [ 27 ipp] (41 ins) at 
[0x27c718:0x27c7bc] in 982527 ns 
12-19 12:33:06.011: INFO/ARMAssembler(563): generated 
scanline__00000077:03515104_00001001_00000000 [ 64 ipp] (84 ins) at 
[0x27c7c0:0x27c910] in 1804978 ns 

Comment résoudre ce problème? Merci

Maqsood

+0

(ou utiliser pâteux, je suppose que le contexte compte) – moritz

+0

btw, MainScreen.this? – moritz

+0

L'écouteur anonyme en cours de définition ('btnGrowUpListener') est encapsulé dans une classe appelée' MainScreen', donc pour fournir le 'Context' Android requis, la notation' MainScreen.this' est utilisée. –

Répondre

0

Le Javadoc pour la MediaPlayer constructor que vous utilisez dit qu'il retournera null si la création du joueur échoue.

Vous ne vérifiez pas si la création a réussi avant d'appeler la méthode start, donc en fonction de la trace de pile ci-dessus, c'est la cause la plus probable de l'exception que vous voyez. Parce qu'il n'y a pas de numéros de ligne dans votre liste de code, il serait vraiment utile si vous nous aviez savoir quelle ligne échoue!

+0

Merci beaucoup! J'ai réglé ça. –