2011-10-17 55 views
4

我剛剛開始使用Android開發並玩耍。何時以及爲什麼要使用getResources()?

documentation for getResources()說會[r]eturn a Resources instance for your application's package.

在代碼示例我已經看到了這個用於訪問資源res,但看起來你可以直接訪問它們。

例如檢索my_stringres/values/strings.xml

<!-- strings.xml --> 
... 
<string name="my_string">This is my string</string> 
... 

您可以使用這兩種方式

第一種方式:

// MyActivity.java // 
... 
// No need to use getResources() 
String msg = getString(R.string.my_string); 
... 

第二種方式:

// MyActivity.java // 
... 
// What is the point of getResources() here? 
// It works but it requires "import android.content.res.Resources;" and is longer 
Resources the_resources = this.getResources(); 
String msg = the_resources.getString(R.string.my_string); 
... 

那麼,您何時需要使用getResources()來訪問資源?似乎沒有必要,或者是隱式調用,還是必須調用它來訪問某些其他類型的資源或以其他方式訪問資源?

回答

3

資源有許多我們可能需要的幫助方法。

R.id,R.drawable all在構建期間返回由android分配的動態int。假設我們需要根據名稱訪問coutries標誌圖像。

如果我們的圖像名稱爲us.png,我們的價值是'我們'。 2種方式來處理它是

if(countryName.equals("us")){ 
    imageview.setImageRsource(R.drawable.us); 
} 

OR

Resources res = getResources(); 
int imageId = res.getIdentifier(getIdentifier(countryName, "drawable" 
     ,"com.myapp"); 
imageview.setImageRsource(imageId); 

第二種方法會去特別是當有超過50個國家的方式,否則你會最終有一個很長的如 - 否則或切換語句。

當你需要訪問的內容資產的文件夾

res.getAssets().open(YOUR FILE); 

資源實例還可以傳遞給其他類文件訪問的資源的資源對象也被使用。這些是您可以使用的一些場景。

2

它將在非活動類中有用。

您將傳遞上下文到類,並從中可以訪問資源。

-1

繼承Activity的類也繼承getResources()。如果你有一個類是一個活動(或其衍生物),你可以訪問這個方法(通過繼承,真的,在面向對象編程中的基本概念是。如果你有一個類不是 a這種類別的衍生物,您需要授予訪問這種上下文以訪問所述資源的權限。

如果您需要更多有關面向對象編程的繼承,多態性等信息,我建議您參考各種涉及這些問題的網站或學校課程。

+0

它是繼承'getResources()',還是您引用應用程序包的資源實例? –

相關問題