バックグラウンドで曲を再生していて、次のページにチェック ボックスがあります。チェックされているときは音楽を鳴らしたままにし、チェックを外しているときは音楽を鳴らしたくない. 一方向を除いて正常に動作します。再生中に音楽のチェックを外すと、音楽が停止します。アプリを再起動しても音楽がオンにならないのは良いことですが、音楽をチェックしようとすると、前のページに戻るまでオンになりません。再確認したら始めたいと思います。音楽が流れていてチェックを外すと一時停止し、チェックを入れると元に戻るので戸惑います。
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();
}
}