2013-05-15 82 views
0

我在開發LiveWallpaper應用程序(我的第一個)時遇到問題。考慮2類:LiveWallpaperServiceLiveWallpaperSettingsLiveWallpaperSettings延伸PreferencyActivity。表示 用戶選擇的偏好設置的示例數據,例如boolean displaySprite(true =>在屏幕上顯示精靈,false不顯示)通過SharedPreferencesLiveWallpaperSettings中保存/保留。訪問SharedPreferences

啓動應用程序(設置 - >顯示 - > LiveWallpaper - > MyLiveWallpaper)時,保存的首選項需要知道,以便可以顯示或不顯示精靈。 但是,LiveWallpaperSettings沒有實例化,直到單擊設置按鈕,因此SharedPreferences不可用,因此保存的設置不可用,直到那時。

我想這在LiveWallpaperService.onCreateScene(),但它在它沒有數據:
SharedPreferences startupPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

我能做些什麼?

+0

你可以發佈一些代碼! – lelloman

回答

1

有一個默認值,如果進入/ sharedpref文件不存在:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); 
boolean display = settings.getBoolean("display", true); 

「公共抽象布爾getBoolean(String鍵,布爾利用DefValue)」

在API級別1 檢索來自首選項的布爾值。

參數 key要檢索的首選項的名稱。 defValue如果此首選項不存在,則返回該值。

希望我沒有誤解你的問題:)

+0

感謝您的回覆,但我認爲您的確誤解了。我對默認值不感興趣,因爲有一個已保存的值,當應用程序啓動時我無法訪問它。 –

+0

您是否檢查過data/appname/shared_prefs文件夾中是否存在sharedpref文件? – Oli

0

在你的喜好xml設爲默認值,並在您的MainActivity的onCreate()中添加以下代碼setDefaultValues(this, R.xml.yourxmlname, false);

+0

感謝您的回覆。我不想要默認值。我很抱歉不清楚。在這種情況下,用戶之前已經爲'displaySprite'設置了一個值,並且我試圖檢索這個值。 –

+0

設置值存儲在默認的共享首選項中。你通過使用奧利答案來獲得價值。儘管它的名字給了你用戶在設置中設置的價值。 –

+0

我認爲你(和奧利)是正確的,似乎已經修復了它。謝謝。 –

相關問題