Note that there are some explanatory texts on larger screens.

plurals
  1. POjava.lang.NullPointerException at onPostExecute?
    primarykey
    data
    text
    <p>I have this classes where in I'm sending a SOAP Request to a server. I have my Main Class, an AsyncTask Class, A Parser Class, an Interface. My problem is that I always get this NullpointerException. What I'm trying to do is in my Main Activity I will send a String to AsyncTask and then the result of onPostExecute in AsyncTask, I need to pass it to the Parser Class, In this part Im having problems. Im using an Interface from my previous question but It's not working.</p> <p>AsyncTask Class:</p> <pre><code>public class TestAsyncTask extends AsyncTask&lt;String, Void, String&gt; { public TestInterface delegate = null; String soapString = "http://-------------"; String serverString = "https:-----------"; @Override protected String doInBackground(String... sString) { String yourValue = sString[0]; String resString = null; //This will be the storage of the response. try { //Uses URL and HttpURLConnection for server connection URL url = new URL(serverString); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); urlConnection.setChunkedStreamingMode(0); urlConnection.addRequestProperty("SOAPAction", soapString); urlConnection.addRequestProperty("Content-Type", "text/xml; charset=utf-8"); urlConnection.addRequestProperty("Content-Length", "" + yourValue.length()); urlConnection.setRequestMethod(HttpPost.METHOD_NAME); // Using OutputStream and Writer to send a request to the server. OutputStream outputStream = urlConnection.getOutputStream(); Writer writer = new OutputStreamWriter(outputStream); writer.write(yourValue); writer.flush(); writer.close(); //Using InputStream to get the response of the request from the server. InputStream inPutStream = urlConnection.getInputStream(); BufferedReader buffReader = new BufferedReader(new InputStreamReader(inPutStream)); ByteArrayBuffer byteBuffer = new ByteArrayBuffer(50); int resint = urlConnection.getResponseCode(); while ((resint = buffReader.read()) != -1) { byteBuffer.append(resint); } resString = new String(byteBuffer.toByteArray()); } catch (Exception aException) { resString = aException.getMessage(); } return resString; } protected void onPostExecute(String aReturnValueString) { //I THINK HERE IS WHERE THE PROBLEM EXIST delegate.processFinish(aReturnValueString); } } </code></pre> <p>Interface, This Im not sure:</p> <pre><code>public interface TestInterface { void processFinish(String output); } </code></pre> <p>Parser Class:</p> <pre><code>public class TestParser implements TestInterface { TestAsyncTask a= new TestAsyncTask(); TextView oTextView[], aTextView[], pTextView[], dTextView[]; //Create a new TextView array to store the parsing results. private LinearLayout linearLayout; int pars; Context contxt; //Constructor public TestParser(Context cContext){ contxt = cContext; //Pass Context to constructor } //Getter for LinearLayout. public LinearLayout getLinearLayout(){ return linearLayout; } //Setter for LinearLayout. public void setLinearLayout(LinearLayout aSetterLinearLayout){ this.linearLayout = aSetterLinearLayout; } public void onCreate(Bundle savedInstanceState) { a.delegate = this; } public void processFinish(String output) { // TODO Auto-generated method stub linearLayout = new LinearLayout(this); //The try/catch statement encloses some code and is used to handle errors and exceptions that might occur in that code. try { //Use SAXParser(Simple API for XML) to handle the parsing of XML(Response). */ SAXParserFactory saxParF = SAXParserFactory.newInstance(); SAXParser sAXPar = saxParF.newSAXParser(); XMLReader xMLReader = sAXPar.getXMLReader(); // Create handler to handle XML Tags (GBXMLHandler extends DefaultHandler). TestXMLHandler xMLHandler = new TestXMLHandler(); xMLReader.setContentHandler(xMLHandler); InputSource inputSource = new InputSource(new StringReader(output)); xMLReader.parse(inputSource); TestData data = TestXMLHandler.aData; int aone = data.getoName().size(); int atwo = data.getDes().size(); oTextView = new TextView[aone]; aTextView = new TextView[aone]; dTextView = new TextView[atwo]; pTextView = new TextView[atwo]; //The for statement provides a compact way to iterate over a range of values. for (pars = 0; pars + 1 &lt; atwo; pars++) { dTextView[pars] = new TextView(getApplicationContext()); dTextView[pars].setText("Description = " + data.getDes().get(pars)); linearLayout.addView(dTextView[pars]); pTextView[pars] = new TextView(getApplicationContext()); pTextView[pars].setText("RegularSellUnitPrice = " + data.getRegularSellUnitPrice().get(pars)); linearLayout.addView(pTextView[pars]); } for (pars = 0; pars &lt; aone; pars++){ oTextView[pars] = new TextView(getApplicationContext()); oTextView[pars].setText("OperatorName = " + data.getoName().get(pars)); linearLayout.addView(oTextView[pars]); aTextView[pars] = new TextView(getApplicationContext()); aTextView[pars].setText("type = " + data.getType().get(pars)); linearLayout.addView(aTextView[pars]); } } catch (Exception e) { System.out.println("XML Pasing Exception = " + e); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload