2013-01-07 89 views
0

我試圖從servlet獲取響應並將其顯示在模擬器上。能夠獲得響應,但是當我試圖在屏幕上顯示響應時,setText正在拋出空指針異常。無法找出原因。我很新的android,請幫助我。setText在嘗試在onPostExecute方法中顯示數據時拋出nullpointerexception

package com.example.httptest;

import java.io.IOException; 
import java.io.UnsupportedEncodingException; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 

import com.demo.parser.XmlParser; 

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    public static final String url = "http://192.168.3.140:8080/HttpServlet/TestServlet"; 
    //public static final String url = "http://192.168.3.228/capture/employeeList.xml"; 
    String output = null; 
    TextView outpuText; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    public void invokeServlet(View view){ 
     AsyncTest test = new AsyncTest(); 
     System.out.println("URL--------------"+url); 
     setContentView(R.layout.activity_main); 
     test.execute(new String[] { url }); 
    } 

    private class AsyncTest extends AsyncTask<String, Void, String>{ 

     @Override 
     protected String doInBackground(String... urls) { 
      // TODO Auto-generated method stub 
      String output = null; 

      for(String url :urls){ 
       System.out.println("url1 "+url); 
       output = getOutputFromUrl(url); 
       System.out.println("output----------"+output); 

       /*EditText text = (EditText) findViewById(R.id.output); 

       text.setText(output); 

       */ 

      } 

      return output; 
     } 

     private String getOutputFromUrl(String url) { 
      System.out.println("in hereeeeeeeeeee"); 

       try { 
        DefaultHttpClient httpClient = new DefaultHttpClient(); 
        HttpGet httpGet = new HttpGet(url); 

        HttpResponse httpResponse = httpClient.execute(httpGet); 
        HttpEntity httpEntity = httpResponse.getEntity(); 
        output = EntityUtils.toString(httpEntity); 
        System.out.println("output1 "+output); 
        // XmlParser.XMLfromString(output); 
       } catch (UnsupportedEncodingException e) { 
        e.printStackTrace(); 
       } catch (ClientProtocolException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       return output; 
      } 


     protected void onPostExecute(String output){ 

      setContentView(R.layout.activity_main); 
      outpuText.setText(output); 


      setContentView(outpuText); 
     } 



    } 

} 
+0

告訴我們logcat ... –

+0

向我們展示Log.d(「output」,output)的結果; ..... 你可以嗎? –

回答

0

問題,

outpuText =新的TextView(本);

感謝您的時間傢伙!

0

在onCreate方法添加outpuText=(TextView)findViewbyId(R.id.textId);的setContentView()後,會幫助你。

不要忘記從postExecute()中刪除setContentView()。

+0

我試過......但得到同樣的例外 –

+0

你得到任何東西在catch塊。如果你知道調試嘗試調試,我強烈地感覺到在try塊中出現錯誤,輸出沒有任何東西。否則,請嘗試將Log.i(「Exception」,「Exception_Name」);在每個有異常名稱的異常中檢查是否有任何異常被捕獲。 並刪除不必要的setContentView – Android

+0

通過在onCreate方法中添加以下步驟解決問題, outpuText = new TextView(this); 感謝您的時間傢伙! –

0

1)請參考outputText。我的意思是 outputText =(TextView)findViewById(R.id.textView1);在onCreate方法中。

2)remove setContentView(R.layout.activity_main);在onPostExecute(字符串輸出)。

+0

它拋出nullPointerException的原因是因爲您正在設置佈局,然後不從該佈局創建參考到ouputText textview,您正在爲其設置值(文本)。 – SKK

+0

我試過......但得到同樣的例外 –

+0

編輯帖子與你所做的一樣,也通過添加logcat。輸出前 – SKK

0

試試這個它解決您的問題

outpuText = (TextView)findViewById(R.id.textviewid); 

其中textviewid是你的TextView的id通過添加onCreate方法接下來的步驟解決

+0

outpuText.setText(輸出); –

+0

我試過......但得到相同的異常 –

+0

@ user1716809乾淨的應用程序和重建後再次運行 –

相關問題