0

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

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

1 に答える 1