Android AsyncTask:在onPostExecute()中启动新活动
公共类HttpHelper扩展异步任务>{ ArrayList=新建ArrayList()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
@覆盖
受保护的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);
}