gpt4 book ai didi

android - 切换 fragment 后共享首选项为空

转载 作者:搜寻专家 更新时间:2023-11-01 08:03:30 24 4
gpt4 key购买 nike

我的共享首选项遇到了一个非常奇怪的问题。我用它们来存储用户 ID、不同的设置等等。如果用户单击我的菜单中的项目(我正在使用 Menu-Drawer ),我正在使用切换 fragment 的 Activity 。

每次登录后,我都会存储用户配置文件。这很完美。完成此操作后,我可以重新启动应用程序,将其从内存中删除,我什至可以重新启动我的设备并且我的值仍然存储。但是当我切换 fragment 时,例如我在主视图中并单击菜单中的“关于应用程序”,一切都消失了。我的值(value)观是空的。

更奇怪的地方是:如果我已经在主视图中时通过选择主项来强制 Activity 重新加载 fragment ,它仍然会被存储。只有当我用不同类型的 fragment 替换它时,一切都会丢失。

我不知道为什么应用会这样。这一切都在具有相同上下文的相同 Activity 中。我总是使用 getActivity 来获取 fragment 中的上下文。

这是我用于存储它的代码的简化 fragment 。

public static void storeUserProfile(Context context, LoginEvent event, String userId, String emailAddress, String passwordHash) {

SharedPreferences userPrefs = context.getSharedPreferences(AppConfig.USER_PREFS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = userPrefs.edit();
editor.clear();

editor.putString("username", event.userName);
editor.putString("id", userId);
editor.putString("email", emailAddress);

editor.commit();
}

这就是我切换 fragment 的方式:

HomeFeedFragment fragment = new HomeFeedFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();

最佳答案

试试这个 fragment ,它可以从您应用中的所有 Activity/fragment 访问。

先声明这些方法..

public static void putPref(String key, String value, Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}

public static String getPref(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(key, null);
}

然后当你想放置一个pref时调用它:

putPref("myKey", "mystring", getApplicationContext());

当你想获得偏好时调用它:

 getPref("myKey", getApplicationContext());

关于android - 切换 fragment 后共享首选项为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17649236/

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