【发布时间】:2013-07-17 01:00:02
【问题描述】:
我在后台播放了一首歌曲,下一页是一个复选框。当它被选中时,我希望音乐保持打开,当它未选中时,我希望它保持关闭。它工作正常,除了一种方式。当我在播放时取消选中音乐时,它会停止播放音乐。现在,如果我重新启动应用程序,音乐不会打开,这也很好,但是当我去检查音乐时,它不会重新打开,直到我回到上一页。我想在重新检查后开始。如果音乐正在播放并且我取消选中它,它会暂停,如果我选中它,它会开始备份,所以我很困惑。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPlayer = MediaPlayer.create(MainActivity.this, R.raw.roy);
mPlayer.setLooping(true);
loadPrefs()
}
@Override
public void onDestroy() {
mPlayer.stop();
super.onDestroy();
}
private void loadPrefs() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
boolean cbValue = sp.getBoolean("CHECKBOX",true);
if(cbValue) {
mPlayer.start();
} else {
// nothing to do
}
}
}
//--------------------------------------------
public class next extends Activity {
CheckBox checkBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.border);
checkBox = (CheckBox) findViewById(R.id.checkBox1);
loadPrefs();
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
savePrefs("CHECKBOX",checkBox.isChecked());
loadPrefs();
}
});
}
private void loadPrefs() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
boolean cbValue = sp.getBoolean("CHECKBOX",true);
if(cbValue) {
checkBox.setChecked(true);
MainActivity.mPlayer.start();
} else {
checkBox.setChecked(false);
MainActivity.mPlayer.pause();
}
}
private void savePrefs(String key, Boolean value) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit = sp.edit();
edit.putBoolean(key, value);
edit.commit();
}
}
【问题讨论】:
-
为什么有两个活动?
-
我拿出了一堆代码,我的按钮太新了 xml
-
应用重启后,打开了哪个activity?是否要在应用重新启动之间保存音乐播放器?
-
第一个。如果未选中,则我重新启动应用程序并转到复选框并选中它,它不会开始播放。
标签: android checkbox onclick sharedpreferences android-mediaplayer