Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial
Peaches Stubbs
21,320 PointsChallenge 3 of 3. I Checked outher answers that I have found on here but I've not been able to pass this yet?
This is the question : Now move the 'try' and two 'catch' blocks from the 'onCreate()' method to the 'doInBackground()' method. Leave the return statement as is, and then execute your custom async task from inside the 'onCreate()' method after 'setContentView()'.
My answer is:
package com.example;
import android.os.Bundle;
import android.view.View;
import java.io.IOException;
import java.net.MalformedURLException;
import android.util.Log;
import android.os.AsyncTask;
public class MainListActivity extends ListActivity {
private class CustomAsyncTask extends AsyncTask<Object, Void, String>{
@Override
protected String doInBackground(Object...params){
try {
URL treehouseUrl = new URL(URL);
HttpURLConnection connection = (HttpURLConnection) treehouseUrl.openConnection();
connection.connect();
int responseCode = connection.getResponseCode();
}
catch (MalformedURLException e) {
Log.e(TAG, "MalformedURLException caught!", e);
}
catch (IOException e) {
Log.e(TAG, "IOException caught!", e);
}
return "";
}
}
}
public static final String URL = "http://www.teamtreehouse.com";
public static final String TAG = MainListActivity.class.getSimpleName();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_list);
customAsyncTask.execute();
}
}
I am sure that I am missing something small here any help would be greatly appreciated. Thanks in advance guys.
2 Answers
Kristen Law
16,244 PointsYou're really close! Just two things you need to change:
Before you do
customAsyncTask.execute();in youronCreatemethod, you'll want to declare aCustomAsyncTaskobject with the variable namecustomAsyncTaskand then initialize it using thenewkeyword and theCustomAsyncTask()constructor. Then, you will be all set to callexecute()oncustomAsyncTaskin the next line.You have an extra closing curly bracket after your
doInBackgroundmethod.
Peaches Stubbs
21,320 PointsThank for your quick response Kristen Law. I made the adjustments but I still seem to be stuck what am I doing wrong here? Thanks in advance.
package com.example;
import android.os.Bundle;
import android.view.View;
import java.io.IOException;
import java.net.MalformedURLException;
import android.util.Log;
import android.os.AsyncTask;
public class MainListActivity extends ListActivity {
private class CustomAsyncTask extends AsyncTask<Object, Void,String>{
@Override
protected String doInBackground(Object... params){
//TODO auto-generated.
return null;
try {
URL treehouseUrl = new URL(URL);
HttpURLConnection connection = (HttpURLConnection) treehouseUrl.openConnection();
connection.connect();
int responseCode = connection.getResponseCode();
}
catch (MalformedURLException e) {
Log.e(TAG, "MalformedURLException caught!", e);
}
catch (IOException e) {
Log.e(TAG, "IOException caught!", e);
}
}
}
public static final String URL = "http://www.teamtreehouse.com";
public static final String TAG = MainListActivity.class.getSimpleName();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_list);
CustomAsyncTask customAsynTask = new CustomAsyncTask();
customAsyncTask.execute();
}
}
Kristen Law
16,244 PointsLooks like you changed up your doInBackground method a little bit. It was correct in your first post, so you can go back and review what it should look like. Also, you have a small typo when you declare the CustomAsyncTask in your onCreate method: you declared the variable as customAsynTask instead of customAsyncTask.