2012-09-27 15 views
0
private class GetXMLTask extends AsyncTask<String, Void, String> 
{ 
     @Override 
     protected String doInBackground(String... urls) 
     {   
     String output = null;   
     try 
     { 
      List<String> citations = new ArrayList<String>(); 
      for (String url : urls) 
       {     
        output = getOutputFromUrl(url); 
        citations.add(output); 
       outputText.setText(output); 
      }    
     } 
     catch(Exception e) 
     { 
      Toast.makeText(getBaseContext(), "Cant connect to server", Toast.LENGTH_LONG).show(); 
     } 
     return output; 
    }   
    } 

//我试图从Google App Engine读取一个字符串,并将其设置为文本框。其余的代码很好。但异步任务抛出一个致命的异常...帮助!致命异常:AsyncTask#1从谷歌应用程序引擎读取

回答

3

删除这样的:在doInBackground()

Toast.makeText(getBaseContext(), "Cant connect to server", Toast.LENGTH_LONG).show(); 

敬酒不工作而移动

outputText.setText(output); 

onPostExecute(){} 
+0

他可以改为'runOnUIThread(Toast.makeText(getBaseContext(),“无法连接到服务器”,Toast.LENGTH_LONG).show();'? – thepoosh

+0

这可能是可能的。但是不会接受AsyncTask崩溃的整个概念? –

+0

基本上是的,但如果这只是一件小事情要做,并且有一个特定的期望返回值(如来自HTTP请求的字符串),并且程序员会想要通知用户问题,那么这是一种方法 – thepoosh

0

UI更新无法在doInBackground()工作,使用runOnUi()方法你可以做到这一点..就像这样

runOnUIThread(Toast.makeText(getBaseContext(), "Cant connect to server", Toast.LENGTH_LONG).show();