![](/img/trans.png)
[英]Android - Problem getResources() and getPackageName()
[英]Implementation of getResources() Android
我剛剛開始學習android編程,並且對方法getResources()產生了疑問。 我注意到當我創建一個資源對象時,我要做的就是:
Resources res = getResources();
第一個疑問是以下原因,為什么我必須以這種方式這樣做,而我不能使用java關鍵字new ? 我不應該這樣做嗎?
Resources res = new Resources();
第二個疑問是:在文件的頂部,我導入了Resources類。
import android.content.res.Resources;
現在,我閱讀了android api,它說getResources()是一個公共抽象方法,如果它是抽象的,哪個類可以實現呢? 如果未將其聲明為靜態,如何簡單地鍵入getResources()?
您的活動擴展了android.app.Activity類,而該類又擴展了android.content.Context類(三個向上的類層次結構)。 類Context
聲明了抽象方法getResources() ,這意味着您的活動子類繼承了該方法,您可以從onCreate()
方法中進行調用(例如)。
方法getResources()
在Context
類中聲明為抽象,但是類層次結構中的中間類之一( android.view.ContextThemeWrapper )提供了該方法的實現。
這也意味着創建Resources
對象不是您的責任。 它由框架完成。
getResources實際上是可以從上下文訪問的方法。 因此,您可以真正將其視為:
context.getResources()
在這種情況下,您的Activity類就是您的上下文,這就是為什么您可以使用以下語法來調用它的原因:
getResources()
http://developer.android.com/reference/android/content/Context.html#getResources%28%29
從這些文檔中:
與有關應用程序環境的全局信息的接口。 這是一個抽象類,其實現由Android系統提供。 它允許訪問特定於應用程序的資源和類,以及對應用程序級操作(如啟動活動,廣播和接收意圖等)的調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.