将变量存储在共享首选项中,并在不同的活动中更改其值



我正在开发一个练习 7 天锻炼的应用程序。我在主要活动上设置了一个进度条,并希望在几天后更改进度。意味着如果我完成第 1 天的锻炼,进度条设置 15%。当我完成第 2 天时,进度设定为 30%。 我可以在没有共享首选项的情况下做到这一点,它工作正常,但是当第 1 天完成后我关闭应用程序时,它再次设置从 0 开始的进度。所以我想出于这个原因使用共享首选项.请有人就此问题指导我;

将值设置为共享优先级

SharedPreferences.Editor editor = getSharedPreferences("ProgressBarData", 
MODE_PRIVATE).edit();
editor.putInt("progress", 15);
editor.apply();

从共享优先级获取价值

SharedPreferences prefs = getSharedPreferences(ProgressBarData, 
MODE_PRIVATE); 
int progress = prefs.getInt("progress", 0);

首先你知道你的错误,你不能将数据存储在局部变量中,因为在活动结束时它摧毁了所有的东西,当你回到Android活动时,它将再次启动所有事情,每件事都重新启动

[https://developer.android.com/guide/components/activities/activity-lifecycle 阅读此内容,您可以更好地理解

现在您的解决方案

如果您想每天存储数据和处理,最好使用本地存储,例如 Sqlite,房间或共享偏好。

执行任务的步骤

有三个步骤来存储,获取和删除共享首选项中的数据

用于存储 ,获取删除数据


//storing
SharedPreferences.Editor editor = context.getSharedPreferences(name,Context.MODE_PRIVATE).edit();
editor.putString(key, data);
editor.apply();
//getting
SharedPreferences getSharedPrefrence = context.getSharedPreferences(name, Context.MODE_PRIVATE);
int data = getSharedPrefrence.getInt(key, IntegerValuesAndStringValues.REGISTER_BEFORE_LOGIN);
return data;
BasicFunctions.removeSharedPrefrences(getContext(),"Name of the preference");

最新更新