gpt4 book ai didi

android - 使用 SharedPreferences 存储数据

转载 作者:行者123 更新时间:2023-11-29 01:00:39 24 4
gpt4 key购买 nike

我正在尝试使用 SharedPreferences
存储一些数据存储数据的方法:

    public void storeSharedPreferences(String string) {
SharedPreferences sharedPreferences = getSharedPreferences("DATA",MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("FRAGMENT",string);
editor.apply();

}

获取数据的方法:

    public String getSharedPreferences() {
SharedPreferences sharedPreferences = getSharedPreferences("DATA",MODE_PRIVATE);
String string = sharedPreferences.getString("FRAGMENT","ONE");
return string;
}

fragment 一和 fragment 二的方法:

 public void buttonSelect(String select) {
if (select == "ONE") {
storeSharedPreferences("ONE");


fragment = new OneFragment();
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame_process, fragment, "OneFragment").addToBackStack(null).commit();

}
if (select == "TWO") {

storeSharedPreferences("TWO");

fragment = new TwoFragment();
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame_process, fragment, "TwoFragment").addToBackStack(null).commit();

}
}

我首先调用了这个方法

buttonSelect(getSharedPreferences());

一切正常,例如当用户处于 fragment 二并退出应用程序时下次将从 fragment 二开始
但问题是使用您使用菜单关闭应用程序(按菜单按钮并清除所有应用程序),下次您打开应用程序时没有任何反应,似乎从未调用过此方法

buttonSelect(getSharedPreferences());

我能做什么?谢谢

最佳答案

最初,使用 editor.commit(); 而不是 editor.apply();

接下来,逻辑可能是这样的:

  1. 当应用首次启动时,创建一个共享首选项并将最后一个 fragment 标志保存为 0。这意味着用户位于主页 fragment 。
  2. 每当用户浏览应用程序时,将 fragment 编号保存在“共享首选项”中。因此,这将继续为用户更新最后导航的 fragment 。
  3. 每当下次启动该应用时,它将与最后一个 fragment 编号共享首选项,从共享首选项中获取最后一个导航 fragment 并将其传递给您的方法 buttonSelect
  4. 您的方法 buttonSelect 然后将加载特定 fragment 。

注意:不要忘记在应用程序启动的 Activity 中调用方法 buttonSelect,无论是在 onCreate() 还是在 onStart哦,我完全忘了,Java 中的字符串比较应该通过 string.equals() 函数而不是双等号来完成

关于android - 使用 SharedPreferences 存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51482413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com