【问题标题】:get SharedPrefrences values in fragment?在片段中获取 SharedPreferences 值?
【发布时间】:2021-01-26 06:42:10
【问题描述】:

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

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

【问题讨论】:

    标签: java android android-fragments fragment sharedpreferences


    【解决方案1】:

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

    【讨论】:

    • 感谢我的朋友,我试试这个并告诉你发生了什么!
    【解决方案2】:

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

    // 您可以为 sharedPreferences 创建单独的类并在每个活动中使用它

    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);
    

    【讨论】:

    • 哦,我很高兴使用您的代码...谢谢您的帮助
    【解决方案3】:

    我有一个在我的大多数项目中使用的管理器文件。下面是它的代码。

    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)
    }
    

    }

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

    【讨论】:

      【解决方案4】:
      //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);
      

      【讨论】:

      • 谢谢我用你的方法看看结果谢谢你的帮助
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      相关资源
      最近更新 更多