簡體   English   中英

Android getResources()的實現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM