2010-11-07 27 views
1

我正在定義一個在對象中設置Drawable屬性的類。問題是我不能訪問​​方法,除非我有一些Context。 我所做的是送的那類活動實例(姑且稱之爲「行爲」),然後我做:從非上下文類訪問可繪製資源

act.getResources().getDrawable(R.drawable.whellchair)

但是,在執行這條線時,它拋出一個NullPointerException

什麼時候想法如何做到這一點?

+5

「act」爲空還是「act.getResources()」爲null? – Juhani 2010-11-07 14:03:56

+0

嘿,夥計!你剛剛提出了重要提示!我沒有檢查什麼是空的,結果是「行爲」。當我把線路放在錯誤的地方時,我正在使用單身人士!謝謝;) – 2010-11-07 14:09:27

回答

1

我發現問題了! 我使用的是單身,我把線在靜態方法訪問「行爲」 ......怎麼我的傻瓜......

抱歉,並感謝您的Juhani的評論:)

0

通行證將應用程序上下文傳遞給您的類的構造函數。在主應用程序類中,如果需要知道生命週期的上下文,請調用getApplication()方法,如果需要綁定到當前進程的上下文,則可以獲取上下文。

實施例:

private Context ctx = getApplication(); 

... some code ... 

MyClass myClass = new MyClass(ctx); 

你的類當然構造具有相應地處理上下文(即語境類型的私有成員設置爲傳遞的值)像這樣的。

private Context ctx = null; 

public MyClass(ctx) { 
    this.ctx = ctx; 
} 

然後你可以使用任何你需要的上下文。

+0

該類是一個單身(所以它selfs instanciates),它並沒有擴展類的活動,以獲得訪問getApplication()或getApplicationContext() – 2010-11-08 23:48:57

+0

以及一個類不必擴展活動,以獲得正確的上下文(即使它會調用getApplication(),它最有可能得到錯誤的上下文,可能是因爲你想在大多數時間顯示主要活動中的東西並獲得一些東西)。但顯然你已經解決了你的問題,所以一切都很好。 – 2010-11-09 08:53:12