2015-04-12 420 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)); 

现在这工作,但我不知道为什么。