2014-02-26 89 views
0

傳遞MainActivity我需要在UI線程啓動的AsyncTask,但構造函數(MainActivity parentActivity) parametr。我不太明白爲什麼應該實施,以及我必須通過它。在PARAMS

這裏的Eclipse說「廣東話決心MainActivity給一個變量。」對於Activity.MainActivity也是如此。

new DownloaderTask(MainActivity).execute();` 

而構造函數。

public DownloaderTask(MainActivity parentActivity) { 
    super(); 

    mParentActivity = parentActivity; 
    mApplicationContext = parentActivity.getApplicationContext(); 

} 

回答

0

改變這一行...

new DownloaderTask(MainActivity).execute(); 

這個...

new DownloaderTask(MainActivity.this).execute(); 

而且你逝去的MainActivityContext不是活動......所以在DownloaderTask()構造,參數將是Context類型不是MainActivity ...構造函數應該如下所示...

public DownloaderTask(Context context) { 
    super(); 

    mApplicationContext = context; 

} 
+0

呀!那就是我的想法,但是這個程序實際上是一個缺少代碼塊的任務。這個構造函數已經寫好了,我不能改變它。所以我傳遞一個實例,然後已經在構造函數中獲取上下文。 – Mabjik

+0

你可以發佈完整的'AsyncTask'嗎?這樣我可以幫助你更多?我想通過傳遞一個'MainActivity'實例來解決這個問題......這對我來說工作得很好。 –

+0

看起來像AsyncTask活動正在工作。但是我接收機遇到了問題。 http://stackoverflow.com/questions/22051532/receiver-not-registered – Mabjik

0

你可以調用像下面如果你是從在MainActivity調用直接

new DownloaderTask(this).execute(); 

,或者如果你是從內部類callling你可以調用像

new DownloaderTask(MainActivity.this).execute();