I have two classes, this one is XMLParser.java extends the activity and execute the ClassAsynTask. Now Im having problem in my ClassAsyncTask, in onPostExecute part where you can find the getApplicationContext(), How can I fix this error? thanks
public class XMLParser extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ClassAsyncTask aObj = new ClassAsyncTask(
"http://www.androidpeople.com/wp-content/uploads/2010/06/example.xml");
aObj.execute();
/* layout to display the view */
aObj.linearLayout = new LinearLayout(this);
aObj.linearLayout.setOrientation(1);
/* Set the ContentView to layout for display */
this.setContentView(aObj.linearLayout);
}
}
This is the ClassAsyncTask.java
public class ClassAsyncTask extends AsyncTask<String, Void, String> {
String targetURL;
TextView name[], website[], category[];
LinearLayout linearLayout;
public ClassAsyncTask(String site){
targetURL = site;
}
@Override
protected String doInBackground(String... urls) {
try {
/* Handling XML */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
/* Send URL to parse XML Tags */
URL sourceUrl = new URL(targetURL);
/* Create handler to handle XML Tags ( extends DefaultHandler ) */
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
return null;
}
/* Return-value from doInBackground */
protected void onPostExecute(String result) {
/* Get result from MyXMLHandler SitlesList Object */
SiteList sitesList = MyXMLHandler.sitesList;
/* Assign TextView array length by arrayList size */
name = new TextView[sitesList.getName().size()];
website = new TextView[sitesList.getName().size()];
category = new TextView[sitesList.getName().size()];
int h = sitesList.getName().size();
/* Set the result text in TextView and add it to layout */
for (int i = 0; i < h; i++) {
//This is where Im getting the error.
name[i]= new TextView(getApplicationContext());
name[i].setText("Name = " + sitesList.getName().get(i));
website[i]= new TextView(getApplicationContext());
website[i].setText("Website = " + sitesList.getWebsite().get(i));
category[i]= new TextView(getApplicationContext());
category[i].setText("Website Category = " + sitesList.getCategory().get(i));
linearLayout.addView(name[i]);
linearLayout.addView(website[i]);
linearLayout.addView(category[i]);
}
}
}
The easiest way is to pass the context into your
AsyncTaskconstructor and then use it when required:And create the task as: