-1

我的 android 游戏主菜单有四个按钮。在我的选择中,有开和关。当用户单击打开按钮时,音乐应该在我开始单击播放时播放。如果用户点击关闭,音乐将不会播放。但默认是,音乐会播放。

我尝试自己编写代码,如果用户单击on按钮,则此sign变量将设置为 1,并且此值将传递给 play 活动。如果符号值等于 1,则开始播放音乐;如果为 0,则不播放音乐。但是,这样做之后,当我点击关闭后,它会导致FORCE CLOSE我的游戏的“”。

我的 Options 活动有以下代码:

musicOn.setOnClickListener(new OnClickListener(){

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    Intent put = new Intent(getApplicationContext(), Level1.class); 

    musicSwitch = 1;
    Bundle cargo = new Bundle();
    cargo.putInt("sign", musicSwitch);

    put.putExtras(cargo);
    }
});

musicOff.setOnClickListener(new OnClickListener(){

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    Intent put = new Intent(getApplicationContext(), Level1.class);             
    musicSwitch = 0;
    Bundle cargo = new Bundle();
    cargo.putInt("sign", musicSwitch);

    put.putExtras(cargo);
    }

});

这是我的一级活动:

int value=1;

Bundle cargo = getIntent().getExtras();
value = cargo.getInt("sign");

if(value==1){
MediaPlayer mPlayer = MediaPlayer.create(Level1.this, R.raw.sounds);
mPlayer.start();
mPlayer.setLooping(true);
}
4

2 回答 2

0

您正在创建 Intent,但没有对它们做任何事情。我想你假设

Intent put = new Intent(getApplicationContext(), Level1.class); 

将允许您向最初启动 Activity 的 Intent 添加额外内容,但事实并非如此。你创建的这个 Intent 不会做任何事情,除非你用它来启动一个新的活动。在 onClick 方法完成后,它只会被 GC 转储。

因此,当您运行getIntent().getExtras();Bundle 时,它​​返回的将不包括您在该 onClick 方法中添加的附加内容。

最好使用视图和活动都可以访问的静态成员变量。如果您希望它在游戏会话之间持续存在,请将其存储在 SharedPreference 中。

于 2013-08-19T18:10:25.150 回答
0

请发布 logcat 更准确。

我认为这是强制关闭,因为您没有告诉它当值等于 0 时该做什么。

if(value==1){
MediaPlayer mPlayer = MediaPlayer.create(Level1.this, R.raw.sounds);
mPlayer.start();
mPlayer.setLooping(true);
} else if(value == 0){
mPlayer.stop();
}

我建议您仅在 if 语句中使 mPlayer 成为静态。

于 2013-08-19T17:58:53.563 回答