2013-01-07 49 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干净的应用程序和重建后再次运行 –

相关问题