来自我的第一项活动:
musicGroup = (RadioGroup) findViewById(R.id.radioGroupForMusic);
turnOn = (RadioButton) findViewById(R.id.radioButtonMusicOn);
turnOff = (RadioButton) findViewById(R.id.radioButtonMusicOff);
musicGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(turnOff.isChecked()) {
int musicOff = 0;
mediaPlayer.pause();
Intent intent = new Intent(MainMenuActivity.this, HighScoreActivity.class);
intent.putExtra("music off",musicOff);
startActivity(intent);
}
else if(turnOn.isChecked()) {
int musicOn = 1;
mediaPlayer.start();
Intent intent = new Intent(MainMenuActivity.this, HighScoreActivity.class);
intent.putExtra("music on",musicOn);
startActivity(intent);
}
}
});
这是我的第二项活动:
Intent intent = getIntent();
int musicOn = intent.getIntExtra("music on",0);
if(musicOn==1) {
mediaPlayer = MediaPlayer.create(HighScoreActivity.this,R.raw.song);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
目前,当我选择radio button
时,它会导航到我的第二个活动,这不是我想要的,我只是想控制来自<的背景音乐strong>第一个活动并使其对其他活动产生影响。 我认为我不应该使用Intent
,因为它始终会导航到第二个活动
感谢任何建议。
答案 0 :(得分:1)
Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", value);
startActivityForREsult(intent)
答案 1 :(得分:0)
将值传递给另一个活动的最佳方法是使用Bundle。
只需创建一个Bundle对象并将传递的参数添加到它。
Bundle bundle = new Bundle();
add value to that bundle like
bundle.putString("key","value");
bundle.putInt("keyInt",value);
现在创建一个Intent对象并将bundle对象传递给putExtra intent对象方法。
Intent intent = new Intent(MainMenuActivity.this, HighScoreActivity.class);
intent.putExtras(bundle);
startActivity(intent);
这样您就可以将值发送到其他活动。
现在将值传递给另一个活动。
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String strVal = bundle.getString("key");
int bytes = bundle.getInt("keyInt");
答案 2 :(得分:0)
请尝试这种方式。 第一次激活的变化。
musicGroup=(RadioGroup)findViewById(R.id.radioGroupForMusic);
musicGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(RadioGroup group,int checkedId){
boolean isMediaPlayerON=false;
switch(checkedId){
case R.id.radioButtonMusicOn:
mediaPlayer.start();
isMediaPlayerON=true;
break;
case R.id.radioButtonMusicOff:
mediaPlayer.pause();
isMediaPlayerON=false;
break;
}
Intent intent=new Intent(MainMenuActivity.this,HighScoreActivity.class);
intent.putExtra("music",isMediaPlayerON);
startActivity(intent);
}
});
和第二项活动
Intent intent = getIntent();
int isMediaPlayerON = intent.getBooleanExtra("music",false);
if(isMediaPlayerON){
mediaPlayer = MediaPlayer.create(HighScoreActivity.this,R.raw.song);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
答案 3 :(得分:0)
这样做。
int musicOnOff = 1;
musicGroup = (RadioGroup) findViewById(R.id.radioGroupForMusic);
turnOn = (RadioButton) findViewById(R.id.radioButtonMusicOn);
turnOff = (RadioButton) findViewById(R.id.radioButtonMusicOff);
musicGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(turnOff.isChecked()){
musicOnOff = 1;
mediaPlayer.pause();
Intent intent = new Intent(MainMenuActivity.this, HighScoreActivity.class);
intent.putExtra("musiconoff", musicOnOff);
startActivity(intent);
}
else if(turnOn.isChecked()){
musicOnOff = 2;
mediaPlayer.start();
Intent intent = new Intent(MainMenuActivity.this, HighScoreActivity.class);
intent.putExtra("musiconoff",musicOnOff);
startActivity(intent);
}
}
});
在第二个Activity
中抓住值
int musicOn = getIntent().getExtras().getInt("musiconoff");
if(musicOn == 1){
mediaPlayer = MediaPlayer.create(HighScoreActivity.this,R.raw.song);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
只需使用一个键,即&#34; musiconoff &#34; > p>
请记住使用一个变量,即&#34; musicOnOff &#34;,以便在选中String
时切换值。因此,即使您没有检查Intent
,该变量的默认值应该是根据选中Radio Buttons
的值。
修改强>
您可以通过这种方式在Radio Button
之间切换,以防止导航到第二个Radio Button
,这只会在检查时导航到第二个。
**Radio Buttons**
答案 4 :(得分:0)
第一种方法:SharedPreferences
您应该将SharedPreferences用于您的目的
Boolean MusicIsOff = true; // whatever you like
SharedPreferences sf=getSharedPreferences("APP_NAME",0);
sf.edit().putBoolean("music",MusicIsOff).commit();
稍后在您的活动中,您可以通过以下方式进行检查:
SharedPreferences sf=getSharedPreferences("APP_NAME",0);
Boolean musicIndicatior=sf.getBoolean("music",false); // false means if i never set this parameter, what is the default value
您可以随意访问它。
第二种方法:广播接收器
还有另一种方法可以解决您的问题。 使用广播接收器。我建议你使用EventBus库这么容易使用,并会为你处理一切。只需在项目中添加几行即可使用它。
首先将其添加到您的gradle文件中:
compile 'org.greenrobot:eventbus:3.0.0'
然后在用户更改单选按钮时要接收广播的所有活动中,添加这些行。
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(Boolean event) {
/* Do something */
};
最后,当用户更改单选按钮时,请执行以下操作:
Boolean music=true;
EventBus.getDefault().post(music);
答案 5 :(得分:0)
虽然其他评论说使用广播接收器(我认为它们意味着本地广播)更好,但我建议您使用EventBus因为unlike Android’s BroadcastReceiver/Intent system, EventBus uses standard Java classes as events and offers a more convenient API.
您只需将消息发送到接收活动,例如:
EventBus.getDefault().post(new MusicStatusEvent(status));
在您的onCheckedChanged(RadioGroup group, int checkedId)
中,它将成为:
public void onCheckedChanged(RadioGroup group, int checkedId) {
// Here you send the message if music is on or off.
EventBus.getDefault().post(new MusicStatusEvent(turnOff.isChecked());
}
并且接收活动必须实施:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MusicStatusEvent event) {
/* Do something after you receive the message */
Log.d("status", "music is" + event.getStatus()? "on" : "off");
};
MusicStatusEvent 只是一个简单的pojo类:
public static class MusicStatusEvent {
private boolean status;
public MusicStatusEvent(boolean status) {
this.status = status;
}
public void getStatus() {
return status;
}
}
有关EventBus的说明,您可以阅读https://stackoverflow.com/a/38122248/4758255
如果您真的想使用广播(虽然我不推荐),您可以查看https://stackoverflow.com/a/25246377/4758255
答案 6 :(得分:0)
试试这个
在你的第一个活动中: -
musicGroup = (RadioGroup) findViewById(R.id.radioGroupForMusic);
turnOn = (RadioButton) findViewById(R.id.radioButtonMusicOn);
turnOff = (RadioButton) findViewById(R.id.radioButtonMusicOff);
musicGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(turnOff.isChecked()){
mediaPlayer.pause();
Intent intent = new Intent(MainMenuActivity.this, HighScoreActivity.class);
intent.putExtra("musicOff",true);
startActivity(intent);
}
else if(turnOn.isChecked()){
mediaPlayer.start();
Intent intent = new Intent(MainMenuActivity.this, HighScoreActivity.class);
intent.putExtra("musicOff",false);
startActivity(intent);
}
}
});
在第二项活动中: -
Boolean musicOff = getIntent().getBooleanExtra("musicOff", true);
if(musicOff){
mediaPlayer = MediaPlayer.create(HighScoreActivity.this,R.raw.song);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}