2012-09-27 17 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();