0

サーブレットから応答を取得してエミュレーターに表示しようとしています。応答を取得できますが、画面に応答を表示しようとすると、setText が null ポインター例外をスローします。原因を突き止めることができません。私はアンドロイドにかなり慣れていないので、親切に助けてください。

パッケージ 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);
         }



    }

}
4

4 に答える 4

0

setContentView() の後に onCreate メソッドを追加outpuText=(TextView)findViewbyId(R.id.textId);すると役立ちます。

postExecute() から setContentView() を削除することを忘れないでください。

于 2013-01-07T05:41:03.673 に答える
0

1) outputText への参照を与えます。つまり、outputText = (TextView) findViewById(R.id.textView1); onCreate メソッドで。

2) setContentView(R.layout.activity_main) を削除します。onPostExecute(文字列出力)で。

于 2013-01-07T05:41:22.610 に答える
0

これを試してください、それはあなたの問題を解決しました

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

textviewid はテキストビュー ID です

于 2013-01-07T05:41:26.570 に答える
0

onCreate メソッドに次のステップを追加することで問題が解決しました。

outputText = 新しい TextView(これ);

お時間をありがとうございました!

于 2013-01-08T04:25:53.273 に答える