[英]Shared preferences between classes (static)?
我有兩個類,一個是LoginIn,另一個是User類。 在loginIn類中,我想顯示用戶登錄時所做的共享首選項。
loginPrefs = getSharedPreferences("loginpreferences",Context.MODE_PRIVATE);
SharedPreferences.Editor loginEditor = loginPrefs.edit();
loginEditor.putString("userID", userIDCrypt);
loginEditor.commit();
現在我想在用戶類中創建一個getID()方法,以便可以使用User.getID();從每個類中調用該方法。 我怎樣才能做到這一點?
我需要在多個類中使用userID,因此我需要一項活動(例如稱為getID)來提供用戶ID。
做到這一點使您的共享偏好成為一類
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;
}
}
現在在創建此類后,當您想使用這種用法時,像這樣使對象和此類
private Session session;//global variable
session = new Session(cntx); //in oncreate
現在我們設置sharedpreference然后像這樣使用
session.setusename("USERNAME");
現在,當您想獲取用戶名時,然后對會話對象進行相同的工作並調用此
session.getusename();
祝你好運:)密碼相同
在一個活動中嘗試一下:
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"));
很抱歉,如果有任何語法或編譯問題,請輸入我的頭,可能會出錯。 因此,從本質上講,這是一種方法,您可以使用它從一個簡單的類公開自己的偏好,並從任何地方訪問它。
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");
您也可以在此類上進行擴展,並添加其他幫助方法,例如getUserName
或類似方法。
更新:
從另一個靜態類調用此函數時,該類需要引用您的應用程序上下文,然后需要將該上下文提供給該函數,而不是使用它。
MySharedPrefs.getStringFieldValue(context, "name"); //if your other static class has a property called context that contains your applications context
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.