gpt4 book ai didi

java - Android:Fragment中的sharedPreference,不从Class中读取数据

转载 作者:行者123 更新时间:2023-12-02 08:46:38 25 4
gpt4 key购买 nike

我有这个类(class)用于 SharedPref 工作

package com.box.a100rados.Data;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

import static android.content.Context.MODE_PRIVATE;


public class UserAccessSession {

private SharedPreferences sharedPref;
private Editor editor;


private static final String FILTER_RADIUS_DISTANCE = "FILTER_RADIUS_DISTANCE";
private static final String Name = "Name";
private static final String Photo = "Photo";
private static final String Rank = "Rank";
private static final String Sid = "Sid";
private static final String Ban = "Ban";
private static final String Latitude = "Latitude";
private static final String Longitude = "Longitude";

private static final String SHARED = "UserData";
private static UserAccessSession instance;

public static UserAccessSession getInstance(Context context) {
if(instance == null)
instance = new UserAccessSession(context);
return instance;
}

public UserAccessSession(Context context) {
sharedPref = context.getSharedPreferences(SHARED, MODE_PRIVATE);
editor = sharedPref.edit();
}

public void storeUserSession(UserSession session) {
editor.putString(Name, session.getUsername());
editor.putString(Photo, session.getPhoto_url());
editor.putInt(Rank, session.getUser_Rank());
editor.putString(Sid, session.getUser_id());
editor.putBoolean(Ban, session.getUser_Ban());
editor.putString(Latitude, session.getLatitude());
editor.putString(Longitude, session.getLongitude());
editor.apply();
}

public void clearUserSession() {
editor.putString(Name, null);
editor.putString(Photo, null);
editor.putInt(Rank, 1);
editor.putString(Sid, null);
editor.putBoolean(Ban, false);
editor.putString(Latitude, null);
editor.putString(Longitude, null);
editor.apply();
}

public UserSession getUserSession() {
UserSession session = new UserSession();
session.setUsername( sharedPref.getString(Name, null) );
session.setPhoto_url( sharedPref.getString(Photo, null) );
session.setUser_Rank( sharedPref.getInt(Rank, 1) );
session.setUser_id( sharedPref.getString(Sid, "") );
session.setUser_Ban( sharedPref.getBoolean(Ban, false) );
session.setLatitude(sharedPref.getString(Latitude,"59.946104"));
session.setLongitude(sharedPref.getString(Longitude,"30.306048"));
return session;
}

public void setFilterDistance(float radius) {
editor.putFloat(FILTER_RADIUS_DISTANCE, radius);
editor.commit();
}

public float getFilterDistance() {
return sharedPref.getFloat(FILTER_RADIUS_DISTANCE, 0);
}
}

我如何打电话:

UserAccessSession tes = UserAccessSession.getInstance(getActivity().getApplicationContext());
UserSession test = tes.getUserSession();

但是在 test.getLatitude()test.getLongitude() 中我有 Null 值。在具有 getUser_RankgetUsername 或其他值的主 Activity 中有时也会发生同样的情况。我做错了什么以及如何解决?在 map 上,重新打开后,我从 SharedPref 获取数据,并且 map 相机会移动到我需要的位置。

P.S我添加这样的数据

UserSession userSession = new UserSession();
UserAccessSession session = UserAccessSession.getInstance(MainActivity.this);
String sid = User_SID;
userSession.setUsername(UserName);
userSession.setPhoto_url(Photo_URL);
userSession.setUser_Rank(Rank);
userSession.setUser_id(sid);
session.storeUserSession(userSession);

我像这样添加坐标:

userAccess = UserAccessSession.getInstance(MainActivity.this);
userSession = userAccess.getUserSession();
userSession.setLatitude(String.valueOf(location.getLatitude()));
userSession.setLongitude(String.valueOf(location.getLongitude()));
userAccess.storeUserSession(userSession);

Thank you for help. I apologize for the possible repetition of the question. I speak English poorly and it’s hard to find information.

最佳答案

我猜当您从不同的来源访问时,就会出现问题。

改用默认的共享首选项,该首选项使用单个文件而不是不同的文件进行存储。

替换此context.getSharedPreferences(SHARED, MODE_PRIVATE);

使用此PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());

关于java - Android:Fragment中的sharedPreference,不从Class中读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61040252/

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