从Asynctask开始活动

时间:2015-04-12 13:46:03

标签: java android android-asynctask start-activity

我知道这个问题之前已经多次回答了,我已经阅读了大部分内容,但我不明白他们为什么不为我工作。

我正在构建一种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中的不同点上对我来说完全正常以创建Toast。

DetailView.class是我想要启动的Actitivity,它可以从MainActivity中正常工作,但不能在这个地方工作。

问题是编译器告诉我他期望android.app.Activity和实际的Argument是“new Intent(context,DetailView.class)”

我很抱歉这么简单且已经经常回答的问题,但我不知道如何让它发挥作用。

感谢您的回答。

4 个答案:

答案 0 :(得分:0)

完美的黑带,我的外部类没有扩展Activity,这就是解决方案。 THX

答案 1 :(得分:0)

您无法在后台线程上更新UI。显示toast和dialog是一种更新UI的方式。

您可以在方法publishProgress(...)doInBackground()并更新onProgressUpdate()

中的用户界面

答案 2 :(得分:0)

问题解决了:

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

现在可以使用,但我不知道为什么。

答案 3 :(得分:0)

有很多答案,但是我将其用于我的应用程序

Intent intent = new Intent(mContext, mainmenu.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            mContext.startActivity(intent);