在片段中获取 SharedPreferences 值?

get SharedPrefrences values in fragment?

如何获取 SharedPrefrences 值,例如,在片段中获取登录状态以进行保存?

SharedPreferences prefs;
prefs= PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = prefs.edit();
editor.putString("isSignIn", "Yes");
editor.commit();

尝试使用 String result = prefs.getString("isSignIn", "No");HERE 中的一些文档。顺便提一句。最好存储 boolean 而不是 String

任何困惑的人我可以给你一个简单的代码:

// 您可以为 sharedPreferences 创建单独的 class 并在每个 activity

中使用它
public class UserLoginPref {

private Context context;
private SharedPreferences sharedPreferences;
private String Phone;
private boolean isSignIn;

public void setIsSignIn(boolean isSignIn){
sharedPreferences.edit().putBoolean("isSignIn",isSignIn).commit();
}

public boolean getIsSignIn(){
isSignIn = sharedPreferences.getBoolean("isSignIn",false);
}


public String getPhone() {
    String mobile = sharedPreferences.getString("Phone","");
    return mobile;
}

public void setPhone(String phone) {
    sharedPreferences.edit().putString("Phone",phone).commit();
}

public UserLoginPref(Context context){
    this.context = context;
    sharedPreferences = context.getSharedPreferences("UserLoginPref",Context.MODE_PRIVATE);
}

public void logOutUser(){
    sharedPreferences.edit().clear();
    setPhone("");
}
}




// And use it in your activity like this
UserLoginPref userPref = new UserLoginPref(this);
userPref.setIsSignIn(true);
//Initialize shared preferences
SharedPreferences sharedPreferences = this.getActivity().getSharedPreferences("com.your.package", Context.MODE_PRIVATE);

//Write the value to shared preferences
sharedPreferences.edit().putBoolean("isSignIn", true).apply();

//Get the value from shared preferences
sharedPreferences.getBoolean("isSignIn", default_value);

我有一个在我的大部分项目中使用的管理器文件。下面是相关代码。

class PreferenceManager constructor(
    private val context: Context
 ) {

private var sharedPreferences: SharedPreferences =
    context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE)

companion object {
    const val USER_ID = "user_id"
}


fun clearSharedPreferences(sessionExpired: Boolean) {
    context.getSharedPreferences(context.packageName, 0).edit().clear().apply()
    val preferences = PreferenceManager.getDefaultSharedPreferences(context)
    preferences.edit().clear().apply()
}

fun saveBooleanValue(key: String, value: Boolean) {
    sharedPreferences.edit().putBoolean(key, value).apply()
}

fun getBooleanValue(key: String): Boolean {
    return sharedPreferences.getBoolean(key, false)
}

fun saveStringValue(key: String, value: String) {
    sharedPreferences.edit().putString(key, value).apply()
}

fun getStringValue(key: String): String? {
    return sharedPreferences.getString(key, null)
}

fun saveIntValue(key: String, value: Int) {
    sharedPreferences.edit().putInt(key, value).apply()
}

fun getIntValue(key: String): Int {
    return sharedPreferences.getInt(key, 0)
}

}

以上 class 有所有吸气剂和 setter。在需要保存数据的地方,只需调用 Preference 实例上的 save 方法即可。获取数据也是如此。这样,您将有一个中心点来管理插入和获取数据。将来您可以在一个中心位置添加任何类型的加密,这是您的偏好 class 我刚刚分享的。此外,您将拥有在伴随对象中定义键的中心点。您可以从项目的任何位置访问它。