我知道这个问题之前已经多次回答了,我已经阅读了大部分内容,但我不明白他们为什么不为我工作。
我正在构建一种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)”
我很抱歉这么简单且已经经常回答的问题,但我不知道如何让它发挥作用。
感谢您的回答。
答案 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);