Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android:仅对活动会话共享首选项(直到它被销毁)_Android - Fatal编程技术网

android:仅对活动会话共享首选项(直到它被销毁)

android:仅对活动会话共享首选项(直到它被销毁),android,Android,我有一个音乐服务,它通过一个复选框来引导我的音乐。复选框状态将正确保存在我的共享首选项中!基本配置=应用程序启动时播放音乐,复选框也打开。只要一切顺利 我只想在活动应用程序会话中保存这些状态。重新启动我的应用程序后,它应该是基本状态(音乐和复选框打开)。在这段代码中,他从最后一个状态开始 谢谢你的帮助 Java代码: chkBoxMusic = (CheckBox) findViewById(R.id.checkBoxMusic); boolean isChecked = ge

我有一个音乐服务,它通过一个复选框来引导我的音乐。复选框状态将正确保存在我的共享首选项中!基本配置=应用程序启动时播放音乐,复选框也打开。只要一切顺利

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

谢谢你的帮助

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;       

}
要删除所有共享首选项,请执行以下操作:

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

但具体何时这样做仍在谈判中-见上面的评论!现在还不完全清楚你想要什么。您可以尝试将其放入活动的
顶部
方法中,看看是否能得到您想要的结果。

当您说“活动应用程序会话”时,您的意思是“直到应用程序被另一个应用程序隐藏”,还是“直到此应用程序被操作系统关闭”,或者“直到手机断电”,或者…?我的意思是如果应用程序完成了,你就回到应用程序桌面。我只需要在应用程序中使用此共享首选项。当应用程序关闭,我重新启动它,然后它应该有基本的设置。谢谢你的帮助!当一个应用程序被最小化时,可能通过按下按钮,它会继续运行。顶部
活动进入
onStop()状态。当您通过点击启动器图标再次运行它时,顶部活动将在
onStart()
状态中循环。但它一直在运行。发生这种情况时,是否要重置首选项?有多少不同的
活动构成了您的应用程序?是否启用了旋转?如果你的应用程序正在运行,而有人关闭了手机的电源,那么重置是否会发生呢?不,我不是说返回主页按钮。我是说如果应用程序关闭了。想象一下,你开始一个游戏,如果你已经玩完,回到应用程序图标/桌面。我上面的代码显示,我使用一个服务来播放背景音乐,我使用共享首选项来保存复选框状态。我想要的是,只有当应用程序处于活动状态时,共享首选项才起作用,我的意思是,只要应用程序处于运行状态,共享首选项就会起作用。当我取消选中我的复选框状态并关闭应用程序时,在下一次启动时,复选框也会被取消选中..但它应该被选中=true..这是基本状态。您是否将其更改为使用您自己的首选项文件?我编辑了答案。对不起,我认为它是清楚的。我已经像几分钟前编辑的版本一样更改了它,但它不起作用。当我重新启动我的应用程序时,复选框状态是从首选项保存的,而不是从基本状态保存的:(让我们emrys sry,但你胡说,它与生命周期无关,onStart(),onStop())诸如此类。你不理解我的问题,但它确实描述得很清楚。而且你从来没有清楚地阅读过我的代码。如果你不知道为什么你要回答这个问题??