作者givemepass (〆)
看板AndroidDev
標題Re: [問題] Shared Preferences
時間Fri May 31 16:51:16 2013
※ 引述《Xavier (X.avi(er))》之銘言:
: 版友好!
: 最近有使用到Shared Preferences(以下SP代稱),
: 不過搞不懂它跟Activity的關係,
: 請大家幫忙解惑 @@"
: mode 都是 MODE_PRIVATE。
: 1.
: 每個Activity都有一個自己的SP嗎?
: 還是程式中所有的Activity共用某區塊?
共用的 其實就是一個資料夾 當你建立一個SP的時候 他會存成XML的檔案格式
存在/data/data/<package name>/shares_prefs這個資料夾之下
假設你在MainActivity.java這個activity使用這樣的程式碼
SharedPreferences settings = getPreferences(0);
那麼你就會發現shares_prefs就會多出一個MainActivity.xml
接著你又用
SharedPreferences.Editor editor = settings.edit();
editor.putString("myword", "givemepass");
editor.commit();
那麼你打開這個xml就會發現長這樣
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="myword">givemepass</string>
</map>
他是利用一個key對應一個value的
你可以根據MODE的設定 來決定是否要讓其它應用程式來存取這個xml
: 2.
: ...
: SharedPreferences Settings1;
: SharedPreferences Settings2;
: ...
: 這兩個變數存取的SP是同一個嗎?
可以是存取同一個XML也可以不是
看你怎麼寫
Settings1 = getSharedPreferences("aaa",0);
Settings2 = getSharedPreferences("bbb",0);
如上面鎖解釋的 你會看到shares_prefs多出兩個xml
分別是aaa.xml跟bbb.xml
: 3.
: 我有兩個 .JAVA檔 控制兩個Activity,
: 都是寫
: SharedPreferences floorSettings; //全域變數
: ...
: floorSettings = getPreferences(MODE_PRIVATE);
: String floorStr = floorSettings.getString("floorString", null);
: ...
: 而floorStr取得的字串卻是不一樣的,是因為 mode 嗎?
: ===
: 謝謝大家花時間看完!
上面解釋過了XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.33.139
推 Xavier:感謝解惑!!! 05/31 17:33
推 LEwww1290:原來如此 02/15 01:57