无法关闭应用程序无法保存复选框首选项

时间:2014-06-05 15:01:50

标签: android checkbox preferences

我有一个偏好复选框。如果选中,则应播放音乐,但如果未选中,则应停止播放音乐。我的代码有效,但它只在关闭应用程序并再次打开它后才识别复选框的命令。所以现在我想在点击时暂停音乐。

这是我的代码:

MainActivity

import android.media.MediaPlayer;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity{
    MediaPlayer song;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        song = MediaPlayer.create(MainActivity.this, R.raw.music);
        song.start();
        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

        boolean song_play = pref.getBoolean("check", true);

        if(song_play == true){
            song.start();
        }
        else
        {
            song.stop();
        }
}   @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.main, menu);
        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        if(item.getItemId()==R.id.action_settings)
        {

            Intent open = new Intent("mlab.PREFS");
            startActivity(open);
        }
        return false;
    }

}

偏好:

import android.media.MediaPlayer;
import android.os.Bundle;
import android.preference.PreferenceActivity;

public class Preferences extends PreferenceActivity{
    MediaPlayer song;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.prefs);

    }


}

1 个答案:

答案 0 :(得分:0)

通过实施SharedPreferences.OnSharedPreferenceChangeListener聆听SharedPreferences中的更改,并使用onSharedPreferenceChanged方法执行操作(播放音乐,停止播放音乐等)。