媒体播放器启动/停止 - 崩溃

问题描述:

当您按下ImageButton声音开始时,我想要这样做,并在下一次单击后停止。媒体播放器启动/停止 - 崩溃

开始和停止工作。但是当你按下后退按钮时,程序崩溃。

问题在哪里?

代码:

public class Sound extends Activity implements OnClickListener { 
     public int count = 0; 
     MediaPlayer y; 
     ImageButton th; 

     @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.app); 
     th = (ImageButton)findViewById(R.id.ibFirst); 
     y = MediaPlayer.create(this, R.raw.th); 
     th.setOnClickListener(this); 
     count = 0; 
    } 
    public void onClick(View th) { 
     if(count == 0){ 
      y.start(); 
      count = 1; 
     } else { 
      y.pause();     
      count = 0; 
     } 
    } 
    @Override 
    protected void onDestroy() { 
     if(y != null) { 
      y.pause(); 
      y.stop(); 
      y.release(); 
      count = 0; 
     } 
     } 


} 

错误:

当我点击开始/停止启动/停止10X:d

3-02 14:21:05.395: W/MediaPlayer(233): info/warning (1, 44) 
    03-02 14:21:05.494: I/MediaPlayer(233): Info (1,44) 
    03-02 14:22:28.085: E/MediaPlayer(233): pause called in state 128 
    03-02 14:22:28.085: E/MediaPlayer(233): error (-38, 0) 
    03-02 14:22:28.085: E/MediaPlayer(233): Error (-38,0) 
    03-02 14:22:33.455: E/MediaPlayer(233): start called in state 0 
    03-02 14:22:33.455: E/MediaPlayer(233): error (-38, 0) 
    03-02 14:22:33.455: E/MediaPlayer(233): Error (-38,0) 
    03-02 14:22:35.964: W/KeyCharacterMap(233): No keyboard for id 0 
    03-02 14:22:35.964: W/KeyCharacterMap(233): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 
    03-02 14:22:36.584: E/MediaPlayer(233): pause called in state 0 
    03-02 14:22:36.584: E/MediaPlayer(233): error (-38, 0) 
    03-02 14:22:36.584: E/MediaPlayer(233): stop called in state 0 
    03-02 14:22:36.584: E/MediaPlayer(233): error (-38, 0) 

当我按下后退按钮。

 03-02 14:22:36.635: D/AndroidRuntime(233): Shutting down VM 
     03-02 14:22:36.635: W/dalvikvm(233): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
     03-02 14:22:36.635: E/AndroidRuntime(233): Uncaught handler: thread main exiting due to uncaught exception 
     03-02 14:22:36.655: E/AndroidRuntime(233): android.app.SuperNotCalledException: Activity {com.troll.sound/com.troll.sound.Sound} did not call through to super.onDestroy() 
     03-02 14:22:36.655: E/AndroidRuntime(233): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3458) 
     03-02 14:22:36.655: E/AndroidRuntime(233): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3487) 
     03-02 14:22:36.655: E/AndroidRuntime(233): at android.app.ActivityThread.access$2800(ActivityThread.java:119) 
     03-02 14:22:36.655: E/AndroidRuntime(233): at 

android.app.ActivityThread$H.handleMessage(ActivityThread.java:1896) 
    03-02 14:22:36.655: E/AndroidRuntime(233): at android.os.Handler.dispatchMessage(Handler.java:99) 
    03-02 14:22:36.655: E/AndroidRuntime(233): at android.os.Looper.loop(Looper.java:123) 
    03-02 14:22:36.655: E/AndroidRuntime(233): at android.app.ActivityThread.main(ActivityThread.java:4363) 
    03-02 14:22:36.655: E/AndroidRuntime(233): at java.lang.reflect.Method.invokeNative(Native Method) 
    03-02 14:22:36.655: E/AndroidRuntime(233): at java.lang.reflect.Method.invoke(Method.java:521) 
    03-02 14:22:36.655: E/AndroidRuntime(233): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
    03-02 14:22:36.655: E/AndroidRuntime(233): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
    03-02 14:22:36.655: E/AndroidRuntime(233): at dalvik.system.NativeStart.main(Native Method) 
    03-02 14:22:36.685: I/dalvikvm(233): threadid=7: reacting to signal 3 
    03-02 14:22:36.714: E/dalvikvm(233): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
+1

我们如何设想现在是什么原因导致您的崩溃?请提供日志.. – 2012-03-02 14:06:38

+0

“没有通过super.onDestroy()调用”有一个问题。 – 2012-03-02 14:32:30

03-02 14:22:36.655: E/AndroidRuntime(233): android.app.SuperNotCalledException: Activity {com.troll.sound/com.troll.sound.Sound} did not call through to super.onDestroy() 

请您onDestroy()实现中调用super.onDestroy()

+0

谢谢!有用! – Defuzer 2012-03-02 15:01:18