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 trialEric De Wildt
Courses Plus Student 13,077 PointsWhy do I get "Need inner class extending thread" error?
Why is the hint message showing "Bummer You should have a new inner class extending thread." when I already do?
public class MainActivity extends Activity {
final TwitterClient twitterClient = new TwitterClient();
private TwitterThread twitterThread;
@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
twitterThread = new TwitterThread(twitterClient);
Thread t = twitterThread;
t.setName("TwitterThread");
t.start();
}
public class TwitterThread extends Thread {
private TwitterClient tc;
public TwitterThread(TwitterClient client){
tc = client;
}
@Override
public void run() {
tc.update();
}
}
}
1 Answer
Seth Kroger
56,414 PointsIn trying a couple of things, it looks like the challenge tester is expecting TwitterThread to have a default constructor. Because your's has a constructor that takes a TwitterThread, it no longer has one and the default has to be written back in.
public class MainActivity extends Activity {
final TwitterClient twitterClient = new TwitterClient();
@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
TwitterThread t = new TwitterThread();
t.setName("TwitterThread");
t.start();
}
public class TwitterThread extends Thread {
@Override
public void run() {
twitterClient.update();
}
}
}
or using the rest of your code
// ...
public class TwitterThread extends Thread {
private TwitterClient tc;
public TwitterThread() {
super(); // It's a good idea to call the superclass' constructor as well
}
public TwitterThread(TwitterClient client){
super();
tc = client;
}
@Override
public void run() {
tc.update();
}
}
Eric De Wildt
Courses Plus Student 13,077 PointsEric De Wildt
Courses Plus Student 13,077 PointsThanks Seth Kroger !
I knew I wasn't wrong and that it had to be something with what the tester actually looks for in the code. I have run into this in other courses on Treehouse.