2016-09-19 37 views
0

我正在学习android并试图找出执行共享首选项类的最佳方法。这是sharedPreference类的一个例子;SharedPreference:如何创建sharedPreference类

public static final String MyPREFERENCES = "MyPrefs" ; 
    public static final String Name = "nameKey"; 
    public static final String Phone = "phoneKey"; 
    public static final String Email = "emailKey"; 
    SharedPreferences sharedpreferences; 

我想把它变成类似于类似这样的类。

package pesa.sharedpreferencedemo.Utils; 

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

/** 
* Created by mpan0590 on 9/19/2016. 
*/ 

public class SharedPreference { 

     public static final String PREFS_NAME = "PESASEND_PREFS"; 
     public static final String PREFS_KEY = "AOP_PREFS_String"; 


     public SharedPreference() { 
      super(); 
     } 

     public void save(Context context, String text) { 
      SharedPreferences settings; 
      Editor editor; 

      //settings = PreferenceManager.getDefaultSharedPreferences(context); 
      settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); //1 
      editor = settings.edit(); //2 

      editor.putString(PREFS_KEY, text); //3 

      editor.commit(); //4 
     } 

     public String getValue(Context context) { 
      SharedPreferences settings; 
      String text; 

      //settings = PreferenceManager.getDefaultSharedPreferences(context); 
      settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); 
      text = settings.getString(PREFS_KEY, null); 
      return text; 
     } 

     public void clearSharedPreference(Context context) { 
      SharedPreferences settings; 
      Editor editor; 

      //settings = PreferenceManager.getDefaultSharedPreferences(context); 
      settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); 
      editor = settings.edit(); 

      editor.clear(); 
      editor.commit(); 
     } 

     public void removeValue(Context context) { 
      SharedPreferences settings; 
      Editor editor; 

      settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); 
      editor = settings.edit(); 

      editor.remove(PREFS_KEY); 
      editor.commit(); 
     } 
} 

有没有办法,我可以为上面的例子中做的一样,我是新来这个sharedpreference/Android的东西,它是一个有点混乱。我基本上只是想创建一个sharedpreference类,您可以在其中添加新值,编辑当前值和删除其他值。我在这里展示的代码不是我的,而是来自我在网上找到的教程。

+1

教程中的代码有什么问题? –

+0

你不需要一个类来管理你的SharedPreferences,只需要使用它就更方便 –

+0

检查它。 –

回答

0

您可以使类这样

public class SharedPrefManager { 

    public static SharedPreferences getSharedPref(Context mContext) { 
     SharedPreferences pref = mContext.getSharedPreferences(Constants.SETTINGS, Context.MODE_PRIVATE); 

     return pref; 
    } 

    public static void setPrefVal(Context mContext, String key, String value) { 
     if(key!=null){ 
     Editor edit = getSharedPref(mContext).edit(); 
     edit.putString(key, value); 
     edit.commit(); 
     } 
    } 

    public static void setIntPrefVal(Context mContext, String key, int value) { 
     if(key!=null){ 
      Editor edit = getSharedPref(mContext).edit(); 
      edit.putInt(key, value); 
      edit.commit(); 
     } 
    } 

    public static void setLongPrefVal(Context mContext, String key, Long value) { 
     if(key!=null){ 
      Editor edit = getSharedPref(mContext).edit(); 
      edit.putLong(key, value); 
      edit.commit(); 
     } 
    } 

    public static void setBooleanPrefVal(Context mContext, String key, boolean value) { 
     if(key!=null){ 
      Editor edit = getSharedPref(mContext).edit(); 
      edit.putBoolean(key, value); 
      edit.commit(); 
     } 
    } 


    public static String getPrefVal(Context mContext, String key) { 
     SharedPreferences pref = getSharedPref(mContext); 
     String val = ""; 
     try { 
      if (pref.contains(key)) 
       val = pref.getString(key, ""); 
      else 
       val = ""; 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 
     return val; 
    } 

    public static int getIntPrefVal(Context mContext, String key) { 
     SharedPreferences pref = getSharedPref(mContext); 
     int val = 0; 
     try { 
     if(pref.contains(key)) val = pref.getInt(key, 0); 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 
     return val; 
    } 

    public static Long getLongPrefVal(Context mContext, String key) { 
     SharedPreferences pref = getSharedPref(mContext); 
     Long val = null; 
     try{ 
     if(pref.contains(key)) val = pref.getLong(key, 0); 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
     return val; 
    } 

    public static boolean getBooleanPrefVal(Context mContext, String key) { 
     SharedPreferences pref = getSharedPref(mContext); 
     boolean val = false; 
     try{ 
     if(pref.contains(key)) val = pref.getBoolean(key, false); 

     }catch (Exception e){ 
      e.printStackTrace(); 
     } 
     return val; 
    } 


    public static boolean containkey(Context mContext,String key) 
    { 
     SharedPreferences pref = getSharedPref(mContext); 
     return pref.contains(key); 
    } 

    public static void saveTestScreens(Context mContext, String key, 
      String value) { 
     Editor edit = getSharedPref(mContext).edit(); 
     edit.putString(key, value); 
     edit.commit(); 
    } 

    public static String getTestScreens(Context mContext, String key) { 
     SharedPreferences pref = getSharedPref(mContext); 
     String val = ""; 
     if (pref.contains(key)) 
      val = pref.getString(key, ""); 
     else 
      val = ""; 
     return val; 
    } 
} 
+0

我要试一试 – mpanga

+0

@mpanga okk让我知道进一步的帮助,如果它可以帮助你达到一定程度,那么请接受它作为答案和upvote –

0

这是一个很好看,你正试图在SharedPreferences创建一个抽象层,它简化整个代码库,使之更具可读性。但是不要自己编写每个实用程序层,您可以尝试使用现有的库或代码库来避免重新发明轮子并调整代码重用原则。只需专注于为自己的应用程序编写核心业务逻辑。

有许多图书馆,在github那里你可以很容易地使用。 TinyDB就是这样一个用于SharedPreferences抽象层,我碰巧使用它,迄今为止它工作得非常好。如果您想要更高级的功能,请尝试在SharedPreferences上搜索基于RxJava的抽象层,我相信您会发现很多。

+1

调查TinyDb – mpanga