0

我有一个音乐服务,它通过一个复选框来控制我的音乐。复选框状态将正确保存在我的共享首选项中!基本配置 = 应用启动时的音乐打开,复选框也打开。这么久一切正常!

我只想在活动的应用程序会话中保存这些状态。重新启动我的应用程序后,它应该是基本状态(音乐和复选框打开)。在这段代码中,他从最后一个状态开始。

谢谢你的帮助!

Java 代码:

    chkBoxMusic = (CheckBox) findViewById(R.id.checkBoxMusic);

    boolean isChecked = getBooleanFromPreferences("isChecked");
    chkBoxMusic.setChecked(isChecked);

    chkBoxMusic.setOnCheckedChangeListener(new OnCheckedChangeListener() {
   public void onCheckedChanged(CompoundButton buttonview, boolean isChecked) {

    Log.i("boolean",""+isChecked);
    ActivitySound.this.putBooleanInPreferences(isChecked,"isChecked");

       if (!isChecked) {

          stopService(new Intent(ActivitySound.this, MusicService.class));
       }

       else {

          startService(new Intent(ActivitySound.this, MusicService.class));
       }

      }

       });

   }

    public void putBooleanInPreferences(boolean isChecked,String key) {

    SharedPreferences sharedPreferences = this.getPreferences(Activity.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean(key, isChecked);
    editor.commit();        
}

    public boolean getBooleanFromPreferences(String key) {

    SharedPreferences sharedPreferences = this.getPreferences(Activity.MODE_PRIVATE);
    Boolean isChecked = sharedPreferences.getBoolean(key, false);

    return isChecked;       

}
4

1 回答 1

1

要删除所有共享首选项:

SharedPreferences myPrefs = getPreferences(Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = myPrefs.edit();
editor.clear();
editor.commit();

但具体何时这样做仍在协商中 - 请参阅上面的评论!即使是现在,也不完全清楚你想要什么。您可以尝试将其放入onStopActivity 的方法中,看看是否能提供您想要的结果。

于 2012-12-11T16:43:53.153 回答