簡體   English   中英

類之間的共享首選項(靜態)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM