繁体   English   中英

从Asynctask启动Activity

[英]start Activity from 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中创建Toast的不同点上对我来说工作正常。

DetailView.class是我要启动的Actitivity,可以从MainActivity正常工作,但不能在此位置工作。

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

对于如此简单且已经经常回答的问题,我感到抱歉,但我不知道如何使它正常工作。

谢谢您的回答。

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

您无法在后台线程上更新UI。 显示吐司和对话框是更新UI的一种方式。

您可以在方法doInBackground()发布publishProgress(...) ,并在onProgressUpdate()更新UI。

问题解决了:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM