当我点击应用程序崩溃时,尝试使用onclicklistener播放媒体

时间:2014-01-27 01:43:57

标签: android android-mediaplayer

当我点击按钮时,应该启动ducks mediaplayer文件,但应用程序崩溃了。   非常感谢帮助,谢谢。

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

Button ducksplay, ducksstop;
MediaPlayer ducks;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ducksplay = (Button) findViewById(R.id.ducksplay);
    ducksstop = (Button) findViewById(R.id.ducksstop);
    ducksplay.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            ducks.start();
        }
    });
}


}

1 个答案:

答案 0 :(得分:0)

如果这真的是整个类,它将崩溃,因为你没有MediaPlayer实例,它是一个空指针。除了在Java中的C ++中,Object变量始终是一个引用,用null初始化。

所以你需要onCreate

中的ducks = new MediaPlayer()

然后MediaPlayer有一个必须遵循的内部状态机

您必须为本地播放做的最小值是:

  1. 实施MediaPlayer对象
  2. 播放器对象上的setDataSouce
  3. 准备玩家对象
  4. 启动
  5. 远程播放必须做的最小值是:

    1. 实施MediaPlayer对象
    2. 播放器对象上的setDataSouce
    3. 播放器对象上的setOnPreparedListener
    4. asyncPrepare播放器对象
    5. 等待onPreparedListener被调用
    6. 在该侦听器调用中开始播放器对象
    7. 作为参考,请查看MediaPalyer状态图:

      http://developer.android.com/reference/android/media/MediaPlayer.html

      并且永远不会忘记为Java中的类成员引用实例化对象,否则它们为空。