2013-12-12 220 views
1

我有兩個類,一個是loggedIn和一個User類。在的loggedIn類我想表明,當英寸類之間的共享偏好(靜態)?

loginPrefs = getSharedPreferences("loginpreferences",Context.MODE_PRIVATE); 
SharedPreferences.Editor loginEditor = loginPrefs.edit(); 
loginEditor.putString("userID", userIDCrypt); 
loginEditor.commit(); 

用戶登錄現在我想在用戶級做出的getID()方法,我做了,我可以調用從每一個方法的共享偏好User.getID();類。我怎樣才能做到這一點?

我需要在多個類中的用戶ID,所以我想要一個活動(稱爲getID例如),給我的用戶ID。

+2

仍不清楚與問題 – KOTIOS

回答

1

做這樣使一個類你sharedpreference

 public class Session { 

      private SharedPreferences prefs; 

       public Session(Context cntx) { 
        // TODO Auto-generated constructor stub 
        prefs = PreferenceManager.getDefaultSharedPreferences(cntx); 
       } 

      public void setusename(String usename) { 
      prefs.edit().putString("usename", usename).commit(); 
      prefsCommit(); 
     } 

     public String getusename() { 
      String usename = prefs.getString("usename",""); 
      return usename; 
     } 
} 

現在當u想用這種使用這樣 化妝對象OG這個類像

private Session session;//global variable 
session = new Session(cntx); //in oncreate 

,現在做這個下課我們設置sharedpreference然後像這樣使用

session.setusename("USERNAME"); 

現在當過ü要獲取會話對象的用戶名,然後同樣的工作,並把這種

session.getusename(); 

好運:)同一密碼

+0

我無法設置與Session.setUserId(123)在另一個類中的用戶ID因爲...它不是一個靜態方法。並且userId具有數字和字符。 – TMIEDEMA

+0

chk我的未定日期答案 –

+0

現在,我如何獲取用戶名? – TMIEDEMA

1

嘗試這種在一個活動:

SharedPreferences sp; 
SharedPreferences.Editor edit; 
sp = getSharedPreferences("enter", MODE_PRIVATE); 
edit = sp.edit(); 
edit.putString("name", username); 
edit.putString("pwd", password); 
edit.commit(); 

在接下來的活動:

SharedPreferences sp = getSharedPreferences("enter", MODE_PRIVATE); 
sp.getString("name", "default value")); 
sp.getString("pwd", "default value")); 
+0

這有效,但在多個活動中我需要用戶ID,所以我想要一個獲取用戶ID的方法。所以我想要一個名爲getID的方法,並且我可以在多個類中使用它.. – TMIEDEMA

0

很抱歉,如果在re是任何語法或編譯問題,只是輸入我的頭腦,可能會犯一些錯誤。因此,本質上這是一種方法,您可以使用它從一個簡單的類公開您的前綴並從任何地方訪問它。

public class MySharedPrefs { 
    public SharedPreferences sp; 

    public MySharedPrefs() 
    { 
     this.sp = c.getSharedPreferences("prefs", Context.MODE_PRIVATE); 
    } 

    public static String getStringFieldValue(Context c, String fieldName) 
    { 
     MySharedPrefs p = new MySharedPrefs(c); 
     return p.sp.getString(fieldName, "default value"); 
    } 

    public static void setStringValue(Context c, String fieldName, String value) 
    { 
     MySharedPrefs p = new MySharedPrefs(c); 
     SharedPreferences.Editor edit; 
     edit = p.sp.edit(); 
     edit.putString(fieldName, value); 
     edit.commit(); 
    } 

} 

然後在你的活動中使用這樣的:

MySharedPrefs.getStringFieldValue(this, "name"); 

您可以也擴大這一類,並添加額外的helper方法,如getUserName或等

UPDATE:

當從另一個靜態類調用此類時,該類需要引用您的應用程序上下文,然後您需要爲此fu提供該上下文而不是使用這個。

MySharedPrefs.getStringFieldValue(context, "name"); //if your other static class has a property called context that contains your applications context 
+0

你不能在靜態字符串中使用這個.. – TMIEDEMA

+0

你在使用這個類的函數是什麼? – Armand

+0

只是爲了擴展,我所指的是當前活動的上下文,所以這將在'onCreate'中使用,否則你需要獲取上下文到你調用這個函數的地方 – Armand