2011-05-07 64 views
1

嘿,我有一個Android應用程序,我在後臺線程中監控gmail服務器..這個線程無限運行...在郵箱中獲取郵件我必須做一個toast..but我無法獲取當前活動的上下文(因爲應用程序中有多個活動)......如何獲取當前正在運行的活動的上下文,或者可能是應用程序..getApplicationcontext給出null。在java中獲取上下文android

+0

actviity是一些tabHost的孩子......? – 2011-05-07 04:53:19

+0

您可以發佈一些代碼,因爲如果您有一個名爲ActMain的活動,然後從中調用ActMain.this或getApplicationContext(),它們應該可以工作。 – 2011-05-07 04:53:41

回答

-1

您可以通過調用Class名稱來獲取Activity的上下文。舉例來說,如果你的活動就叫做從內MainActivity可以通過鍵入獲得上下文:

Context context = this;

10

如果您運行的是ActivityService,既Context自己,所以叫this足矣。對於監聽器的任何回調方法,this將引用監聽器,而不是Activity。您可以參考Context使用任何View

Context context = myView.getContext(); 
+0

我沒有運行一項活動或服務,我正在運行一個單獨的線程,因爲此監控需要無限運行的線程..我不能使用將阻止我在前臺的其他活動的服務。 – user741855 2011-05-07 05:06:41

+0

但是這個線程一定是在某個地方啓動的。在你的'Runnable'類中創建一個指向原始'Activity'的字段(你可以在構造函數本身中創建'MyRunnable = new MyRunnable(this);' – Aleadam 2011-05-07 05:10:43

+0

我試過了dat,但是當我從線程吐司時, looper錯誤的東西就像looper沒有準備好.. – user741855 2011-05-07 05:20:32

1

使用getApplicationContext()來獲得當前的上下文。 例如,

Context mContext=this; 

Context mContext=getApplicationContext(); 

如果actvity一些tabHost的任何子女Acivity,然後嘗試 的getParent()。getApplicationContext()也。

+0

getApplicationContext()對我很好用,需要在Camera PictureTaken Listener中使用。謝謝! – rsc 2014-04-20 02:39:23

3

在祝酒詞和聽衆和無處不在,如果你需要得到資源,你可以使用

Resources.getSystem().getString(android.R.string.cancel) 

它絕對萬能的位置,但僅支持系統資源。

相關問題