Java 安卓系统中的开/关音乐

Java 安卓系统中的开/关音乐,java,android,audio,audio-player,android-music-player,Java,Android,Audio,Audio Player,Android Music Player,我的android游戏主菜单上有四个按钮。在我的选择中,有开和关。当用户单击on按钮时,音乐应在我开始单击play时播放。如果用户单击“关闭”,音乐将不会播放。但默认情况下,音乐将播放 我尝试自己编写代码,如果用户单击on按钮,则该符号将设置为1,该值将传递给播放活动。其中,如果符号值等于1,则音乐将开始;如果为0,则不会播放音乐。但是,执行此操作后,在我单击“关闭”后,它会导致“强制关闭游戏” 我的选项活动有以下代码: musicOn.setOnClickListener(new OnClic

我的android游戏主菜单上有四个按钮。在我的选择中,有开和关。当用户单击on按钮时,音乐应在我开始单击play时播放。如果用户单击“关闭”,音乐将不会播放。但默认情况下,音乐将播放

我尝试自己编写代码,如果用户单击
on
按钮,则该
符号将设置为1,该值将传递给播放活动。其中,如果符号值等于1,则音乐将开始;如果为0,则不会播放音乐。但是,执行此操作后,在我单击“关闭”后,它会导致“强制关闭游戏”

我的选项活动有以下代码:

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);
}
这是我的一级活动:

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);
}

请张贴日志以便更准确

我认为这是强制关闭,因为你没有告诉它当值等于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为静态。

您正在创建意图,但不使用它们做任何事情。我想你是在假设

Intent put = new Intent(getApplicationContext(), Level1.class); 
将允许您在最初启动活动的意图中添加额外的内容,但事实并非如此。除非您使用它来启动一个新活动,否则您创建的这个意图不会起任何作用。在onClick方法完成后,它将被GC转储

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


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

您需要更具体一些,请添加一些编码:)抱歉。您可以发布日志吗?