[英]Android - Shared Preference with Two Classes
基本上,我想設置一個類,使其具有用於設備的getter和setter來存儲和檢索數據,以及用於訪問它的其他類。 我設法使sharedpreferences在一個類中工作,但在兩個類中遇到了麻煩(我熟悉Java但不熟悉Android,我讀過某個地方,我不應該使用Activity,而是靜態的,也不能正常工作)。 無論如何,這里是getter / setter類。
public class Storage extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
final SharedPreferences prefs = this.getSharedPreferences(
"uk.co.kenreid.examplestory", Context.MODE_PRIVATE);
String nameKey = "uk.co.kenreid.examplestory.name";
我在其他類中使用以下代碼段進行訪問(最終用作onclicklistener中的變量“ storage”):
final Storage storage = new Storage();
storage.storeItem("name", name);
System.out.println(storage.getString("name"));
嘗試這個:
SharedPreferences prefs = this.getSharedPreferences("uk.co.kenreid.examplestory", Context.MODE_MULTI_PROCESS);
以共享首選項存儲內容:
SharedPreferences prefs = getSharedPreferences("TOT", Context.MODE_PRIVATE);
Editor ed = prefs.edit();
ed.putString(key, value);
ed.commit();
您可以在onCreate方法中使用上面的代碼。
從共享的偏好中獲取一些東西:
SharedPreferences prefs = getSharedPreferences("TOT", Context.MODE_PRIVATE);
prefs.getString(key, null);
我相信您的問題是要從Activity
初始化SharedPreferences
嗎?
假設這是您的問題,則可以通過Storage
類的構造函數傳遞一個Context
來初始化它。
例如。
SharedPreferences prefs;
public Storage(Context aContext){
prefs = aContext.getSharedPreferences("uk.co.kenreid.examplestory",
Context.MODE_PRIVATE);
}
然后通過原始的acessor方法進行訪問。 最好是將Application Contex
t而不是Activity Context
傳遞給構造函數,因此在創建Storage類時,請在Activity中這樣調用它:
Storage myStorage = new Storage(getApplicationContext());
同樣,最好創建一個Singleton類,以允許您使用相同的Storage實例。 網上有很多Java單例教程。
嘗試這樣:
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
mVariable = sharedPref.getBoolean(SettingsActivity.KEY_TO_VARIABLE, false);
檢查getSharedPreferences的文檔
在這里,第一個參數是存儲數據的共享首選項的名稱。 因此,您需要在每個類中使用相同的名稱來訪問相同的共享首選項。
您可以使用單獨的類可以處理您的所有首選項
public class PreferenceManager {
public static void setLogInSuceess(boolean login, Context context) {
SharedPreferences preferences;
preferences = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
preferences.edit().putBoolean("LOGIN", login).commit();
}
public static boolean getLogInSuceess(Context context){
SharedPreferences preferences;
preferences = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
boolean login = preferences.getBoolean("LOGIN", false);
return login;
}
}
隨時隨地使用它,
PreferenceManager.setLogInSuceess(true / false,context); boolean _login = PreferenceManager.getLogInSuceess(context);
嘗試這個:
public class Storage extends Application
應用程序是用於共享活動數據的類
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.