2011-12-26 40 views
13

我是Android新手,我自己從網上的資源中學習SDK。Resources.getSystem()vs getResources()

我現在遇到了一種情況。我想下面的代碼:

類型1:getResources().getString(android.R.string.cancel);

類型2: Resources.getSystem().getString(android.R.string.cancel);

類型3: getString(android.R.string.cancel);

所有上述方法返回相同的值。那麼這些方法是什麼,它們的用例是什麼。什麼時候使用哪種方法的良好做法。請幫助我。

回答

0

這三種方法都是一樣的。 以下是根方法:getApplicationContext().getResource().getString("")以下是快捷方式:getString("") 在應用程序上下文上處理時使用快捷方式。 在幾乎所有情況下,我們使用getString()來獲取在String文件中定義的字符串。

4

所有3返回相同的值,但Resources.getSystem()引用了系統資源,並且可能導致崩潰 if used incorrectly.

的建議用法「的getString(android.R.string.cancel);」

它也可以在Android開發者網站上的WalkieTalkieActivity.java code中使用。

+0

是的,我試着用Resources.getSystem()它給了我一些地方強制..我推薦其他兩個.. – 2013-06-26 13:02:38

7

區別不僅在於你得到什麼,而且在哪裏你可以使用它們。

第一個和第三個正在使用「上下文」。無形。因此,除非將上下文或資源作爲靜態變量或參數傳遞到作用域,否則經常(在靜態成員中或在活動成員外)不能直接使用它們。但第二個

Resources.getSystem().getString(android.R.string.cancel) 

即使在靜態常量聲明中,您也可以在應用程序中使用絕對的萬能!但對於系統資源只有

+3

它雖然帶來了一個缺點。 'Resources.getSystem()'僅提供對系統資源(無應用程序資源)的訪問權限,並且沒有爲當前屏幕配置(不能使用維度單位,不根據方向等進行更改)。 – 2016-03-14 15:00:10

+0

@AlexanderSuraphel請注意答案的最後一句。我絕對同意你的看法。 – Gangnus 2016-03-15 07:46:01

相關問題