2015-04-12 82 views
0

我知道這個問題已經回答了幾次,我已經閱讀了他們大部分,但我不明白他們爲什麼不爲我工作。開始從Asynctask活動

我正在構建一個Webcrawler,因此我有一個Asynctask將HTML代碼解析爲一個類中的所需變量。

我知道想要啓動Asynctask vie OnClick這不是問題,但我想在Asynctask解析HTML代碼之後啓動一個不同的Activity。

既然是Asynctask,我認爲最好是在OnPostExecute中啓動Actitivty。

我的代碼非常簡單和基本,但我不知道爲什麼我有問題。

@Override 
    protected void onPostExecute(String result){ 
     if(dialog.isShowing()){ 
      dialog.dismiss(); 
     } 
     startActivity(new Intent(context, DetailView.class)); 
    } 

的背景是,我有在MainActivity的上下文中的變量,並且在的AsyncTask的不同點工作完全正常,我創建吐司。

DetailView.class是我要開始的靈活性,它可以在MainActivity中正常工作,但不在這個地方。

的問題是,編譯器告訴我,他預計android.app.Activity和實際的參數是「新的意圖(背景下,DetailView.class)」

我很抱歉的這樣一個簡單的和已經經常回答問題,但我不知道如何得到它的工作。

謝謝你的任何答案。

+1

是你的AsyncTask一個內部類嗎?外部類是否擴展Activity? – Blackbelt

+0

我想,你正在使用'this'上下文。你有沒有嘗試用'getBaseContext()'或'MyActivity.this'替換它? –

+0

它崩潰了嗎?錯誤是什麼?也發佈你的整個代碼和logcat –

回答

0

完美的黑帶,我的外部類沒有擴展活動,這是解決方案。 Thx

0

您無法更新後臺線程上的UI。顯示烤麪包和對話框是更新UI的一種方式。

可以在方法doInBackground()和更新UI publishProgress(...)onProgressUpdate()

+0

顯示吐司不是問題,將其包裝在Handler作品中。 Toasts也顯示了對話框,但DetailView活動不起作用。 –

0

問題解決了:

context.startActivity(new Intent(context, DetailView.class)); 

現在這工作,但我不知道爲什麼。