我的应用程序遇到了问题,我有一个“选项”类,其中有一个 ToggleButton,用于处理我在 Session 中创建的音乐播放(打开或关闭)。但是,如果我关闭音乐,更改屏幕并返回选项类,即使音乐不再播放,ToggleButton 也会返回“on”,这意味着我必须按两次按钮才能播放音乐其实回来吧。有没有人有任何想法?
服务等级:
public class MyMusicService extends Service {
MediaPlayer mp;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mp = MediaPlayer.create(this, R.raw.song);
mp.start();
mp.setLooping(true);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(mp!=null) {
mp.stop();
mp.release();
}
mp=null;
}
}
选项类:
公共类 OptionsActivity 扩展 Activity {
Intent i; // Handles MyMusicService.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.options);
//setting the layout
i=new Intent(this, MyMusicService.class);
final ToggleButton soundOption = (ToggleButton) findViewById(R.id.soundPref);
soundOption.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on clicks to control sound being on and off.
if (soundOption.isChecked()) {
Toast.makeText(OptionsActivity.this, "Music on.", Toast.LENGTH_SHORT).show();
startService(i);
} else {
stopService(i);
Toast.makeText(OptionsActivity.this, "Music off.", Toast.LENGTH_SHORT).show();
}
}});
}
}
MainActivity 类
Intent i;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//setting the layout
//Auto starts playing music on app launch.
i = new Intent(this,MyMusicService.class);
startService(i);
这可能与我拥有的 XML 中的事实有关:
android:checked="true"
谢谢你的帮助。