2013-04-22 60 views
6

當我使用列表視圖並且我有一個自定義Base Adapter類時,在基本適配器由getApplicationContextclassname.this實例化時,我在列表視圖中獲得不同的文本顏色。 通過getApplicationContext我得到白色文字顏色,但classname.this是黑色的。任何人都可以爲我解釋嗎?getApplicationContext和classname.this之間的區別

+2

見[這裏](HTTP ://stackoverflow.com/questions/5018545/getapplication-vs-getapplicationcontext) – Gunaseelan 2013-04-22 07:19:49

+0

可能你已經應用了不同的主題到你的具體活動,然後整個應用程序。這可能會導致基於使用哪種上下文的樣式中的差異。 – Shiv 2013-04-22 07:35:31

+0

我實際上在我的所有活動中都使用android:theme =「@ style/Theme.VPI」 – 2013-04-22 07:44:40

回答

6

它們基本上是背景信息的兩個實例,但不同的是應用程序實例是依賴於應用程序的生命週期,而活動實例被綁定到一個活動的生命週期。因此,他們有機會獲得對應用環境的不同信息...

看到 getApplicationContext

編輯

在找到你的答案將會有助於你Android Holo Light styling changes depending on chosen context

+0

非常感謝你,我在你的帖子中找到了我的回答 – 2013-04-22 07:51:05

+0

welcum :)親愛的...很高興我可以幫助你 – Shiv 2013-04-22 08:18:27

6

ActivityName.this指的是活動上下文。 getApplicationContext()引用應用程序上下文。

大多數情況下最好使用活動上下文。

查看commonsware提供的答案。對該主題有詳細的解釋。

When to call activity context OR application context?

報價表上面的鏈接

這裏有原因爲什麼不使用getApplicationContext()無論你走到哪裏:

  1. 這不是一個完整的上下文,配套一應俱全該活動可以。您將嘗試使用此上下文執行的各種操作都將失敗,主要與GUI有關。

  2. 如果來自getApplicationContext()的Context持有由您調用創建的東西,而您沒有清除,則它可以創建內存泄漏。通過一個活動,如果它持有某種東西,一旦活動被垃圾收集,其他的東西也會被刷新。應用程序對象在整個過程中保持不變。

+0

非常感謝您,但實際上我無法理解爲什麼文本顏色在上下文 – 2013-04-22 07:37:09

+0

閱讀答案中的第1點。也許是原因。向我們展示一些代碼。 – Raghunandan 2013-04-22 07:37:43

+0

是的,你說得對,也許我應該仔細閱讀上下文參考 – 2013-04-22 07:40:45