0

使用此代码,我想播放声音。我为它调用 playSound() 方法

public class MainActivity extends Activity
{
private MediaPlayer cPiano;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(new GameView(this));
}
public void playSound(){
    cPiano = MediaPlayer.create(this, R.raw.cpiano);
    cPiano.start();
    }
}

public class GameView extends SurfaceView
{
private SurfaceHolder surfaceHolder; 
private MainActivity mainActivity

public GameView(Context context)
{
    super(context); 
    mainActivity = new MainActivity();
    }

    @Override
protected void onDraw(Canvas canvas)
{
    for (Pixel pixel : pixelList)
    {
        pixel.onDraw(canvas); 
    }
    for (int i = pixelList.size() - 1; i >= 0; i--)
    {
        Pixel pixel = pixelList.get(i);
        if (pixel.isBar())
        {
            mainActivity.playSound();
            removePixel(i);
            break;
        }
    }
}

这只是最重要的代码。但是当它应该播放声音时,我得到一个 Android 运行时错误

怎么了?

4

1 回答 1

1

而不是 mainActivity.playSound() 线尝试:

MainActivity host = (MainActivity)getContext();
host.playSound();

同时删除新的 MainActivity()。不得直接实例化活动

于 2013-08-04T20:55:21.323 回答