2009-11-29 36 views
11

在Android實用程序類中,我想在類中獲取系統首選項值,但是我沒有上下文,因爲調用它的類沒有上下文。我發現對於資源,可以使用靜態Resources.getSystem()函數。有沒有類似的方式獲得沒有上下文的系統偏好?在沒有任何上下文的情況下獲取Android的系統首選項

我的課程不是一項活動或服務。這是一個實用課程。如果需要,可以提供更多信息。

+0

出於好奇,我現在是在完全相同的情況下,你。對於你最終決定的事情,你有什麼想法? – camperdave 2010-10-21 06:26:17

回答

7

你必須發送一個上下文 - 不要試圖逃避你的責任。 :)您的實用程序類必須由某個級別的Activity或Service調用,並且您將通過每個方法調用將該Context全部傳遞到該行。我知道這很煩人,我不得不親自做類似的事情。考慮它是保持代碼簡單的動機,並且需要儘可能少的方法調用來完成某些事情。

+0

不,這不是懶惰。我正在定製整個Android,並且該類由沒有上下文的內部Android類調用。 – Mostafa 2009-11-29 21:14:58

+6

然後,「首選項」不是您想用來存儲信息的內容。首選項的範圍是應用程序/活動。相反,將信息存儲在磁盤上。 – Konklone 2009-11-29 23:31:26

+0

謝謝。這可能有幫助。我應該檢查。 – Mostafa 2009-11-30 10:31:28

-1

我使用下面的技巧:http://www.hasemanonmobile.com/2009/10/05/quick-and-very-dirty-android-development-trick/

基本上你藏掀起了上下文指針爲您的活動中的靜態變量。如果你在緊急的期限內,我只會推薦這個醜陋的黑客。另外,如果你正在編寫一個工具類,你可能需要(和很多Android工具一樣需要)調用應用程序爲你的構造函數提供一個上下文。

+0

認爲這是一個鏈接腐爛那裏:) – t0mm13b 2013-03-22 17:25:18

-3

您可以創建一個情境:

Context myContext = createPackageContext("com.example", 0); 
+4

請添加評論,當你downvote這個答案。所以我們可以瞭解爲什麼這不是一個好的解決方案。 – kuester2000 2010-10-26 15:05:34

+3

'createPackageContext()'是'Context'上的一個非靜態方法,因此您需要有一個'Context'來調用它。他的問題是,如果你想要做的就是訪問系統資源,他不想要你在任何地方傳遞一個上下文對象。 – 2011-04-04 01:40:14

相關問題