Android AsyncTask:在onPostExecute()中启动新活动

Android AsyncTask:在onPostExecute()中启动新活动,android,android-intent,Android,Android Intent,公共类HttpHelper扩展异步任务>{ ArrayList=新建ArrayList() @覆盖 受保护的ArrayList doInBackground(字符串…URL){ //TODO自动生成的方法存根 字符串结果=”; for(字符串url:url) { HttpClient=new DefaultHttpClient(); HttpGet请求=新的HttpGet(url); 尝试 { HttpResponse response=client.execute(请求); InputStre

公共类HttpHelper扩展异步任务>{ ArrayList=新建ArrayList()

@覆盖
受保护的ArrayList doInBackground(字符串…URL){
//TODO自动生成的方法存根
字符串结果=”;
for(字符串url:url)
{
HttpClient=new DefaultHttpClient();
HttpGet请求=新的HttpGet(url);
尝试
{
HttpResponse response=client.execute(请求);
InputStream in=response.getEntity().getContent();
BufferedReader br=新的BufferedReader(新的InputStreamReader(in));
字符串行=null;
StringBuffer sb=新的StringBuffer();
而((line=br.readLine())!=null)
{
sb.追加(第+行“\n”);
}
in.close();
结果=sb.toString();
String pageSource=新字符串(结果);
int startindex=pageSource.indexOf(“pdf_doc/”);
字符串str=“”;
字符串[]温度;
while(startindex!=-1)
{
int endindex=pageSource.indexOf(“.pdf”,startindex);
str=pageSource.substring(startindex+8,endindex);
字符串分隔符=“%20”;
字符串值=”;
temp=str.split(分隔符);
对于(int i=0;i试试这个

@Override
protected void onPostExecute(Void result)
{
    super.onPostExecute(result);
    Intent intent = new Intent(MyAsyncTaskActivity.this, NextActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    getApplicationContext().startActivity(intent);
}

无法从AsynctAsk调用
getApplicationContext()
。相反,您可以在构造函数中声明变量ctx,该变量为
getApplicationContext()


或者,您也可以通过调用当前名称来获取当前活动的上下文,如
MyAsyncTaskActivity。this

@Override
protected void onPostExecute(Void result)
{
    super.onPostExecute(result);
    Intent intent = new Intent(MyAsyncTaskActivity.this, NextActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    MyAsyncTaskActivity.this.startActivity(intent);
}

您的问题到底是什么?您尝试了什么?您遇到了什么错误?
getApplicationContext()
在AsyncTask中不可用。至少如果您将其放入一个不从
上下文继承的类中
@Override
protected void onPostExecute(Void result) 
{
    super.onPostExecute(result);
    Intent intent = new Intent(ctx.this, NextActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    ctx.startActivity(intent);
}
@Override
protected void onPostExecute(Void result)
{
    super.onPostExecute(result);
    Intent intent = new Intent(MyAsyncTaskActivity.this, NextActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    MyAsyncTaskActivity.this.startActivity(intent);
}