2010-10-29 58 views
2

這裏有兩個活動,A和B.A是main,B是PreferenceActivity和兩個EditTextPreference。將EditTextPreference綁定到給定的首選項文件(getSharedPreferences)

我想能夠訪問從活動A由B生成的首選項,併爲此,我當然需要(我猜)在A上getSharedPreferences但爲了做到這一點,我需要提供的偏好文件產生它的活動。這是單調乏味的(長名字),最好是不穩定的(取決於產生它的活動),最後它是一團糟,因爲把所有東西放在一個xml文件下面好得多,它的名字對我所有的活動都是衆所周知的。此外,如果我有100個活動,我將如何跟蹤偏好文件呢......

所以問題是:我該如何「綁定」一個EditTextPreference,以便對給定的偏好文件,而不是由Android自動生成的文件?

回答

2

我不太清楚爲什麼要使用特定的首選項文件。爲什麼不是默認的?

SharedPreferences pm = PreferenceManager.getDefaultSharedPreferences(this);爲您提供了在您的應用程序中全部有效的共享首選項。 PreferenceActivity中將寫入什麼內容。

+0

是的,它的工作,謝謝。我正在嘗試getPreferences和getSharedPreferences,都沒有工作。第一個會給我不同的文件名(取決於我所處的活動),並使用第二個我需要事先知道的完整包+類名(這是文件名),並且它不適用於不同的首選項活動,它會根據每個EditTextPreferences自動生成首選項。 – davidcesarino 2010-10-29 18:18:06

+0

很高興幫助!我可以請你接受答案嗎?這樣我們都得到了重點。謝謝! – EboMike 2010-10-29 18:22:53

+0

是不是綠色的方式來做到這一點?我很困惑,我是新來的。如果你的意思是投票,我嘗試了,但我沒有足夠的代表。啊,你是EboBirthday的作者,對吧?哇... – davidcesarino 2010-10-29 21:15:24

0

在你的一個類中使用一個靜態字符串

+0

我試着用getSharedPreferences。考慮到我從一個PreferenceActivity中使用了EditTextPreferences,它對我很有用。這樣我就可以知道包+類的名稱並從其他所有人靜態訪問。但是,這並不是最優雅的,因爲我可以稍後添加其他PreferenceActivity'ies,並且每個EditTextPreference都將設置更改爲其自己的活動首選項文件。這隻會增加複雜性......我以這種方式結束了一大堆「package_activityname.xml」文件,並且需要記住每個文件。無論如何,非常感謝你幫助我! :-) – davidcesarino 2010-10-29 18:21:11

+0

等等,你想要個人活動的偏好?這確實令你感到困惑。 – Falmarri 2010-10-29 18:39:19

+0

我只有一個PreferenceActivity,我不需要單個文件,即使每個PreferenceActivity都有一個。我只是想知道是否有一種方法可以集中訪問所有活動的所有首選項,而無需知道每個生成的xml文件的名稱(位於/ data/data/package/shared_prefs下)。我甚至都不知道,即使存在,所以我問我是否可以,至少*,將EditTextPreferences重定向到以前已知的xml文件。 – davidcesarino 2010-10-29 21:08:45

相關問題