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

Android Build a Simple Android App Basic Android Programming Adding the OnClick Method

Sonia Reeder-Jones
Sonia Reeder-Jones
3,785 Points

R.id and R.layout are red in my Fun Facts Activity java file and are producing errors.

I'm getting a "cannot resolve symbol R" message in the Fun Facts Activity java file and the build fails. All R symbols are marked in red including R.layout and R.id. There is no R.id import statement. Some sources suggest doing Build>Clean Project, but this does not solve the problem. Other sources suggest adding an R.id import statement, but manually adding this leaves it gray or "unused". How do you correct this?

Joyce Chidiadi
Joyce Chidiadi
1,867 Points

Hi Sonia,

Can you past your code and gradle build script (app) here let's have a look

Sonia Reeder-Jones
Sonia Reeder-Jones
3,785 Points

Here is the code:

import android.content.DialogInterface; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;

public class FunFactsActivity extends AppCompatActivity { // Declare our view variables private TextView mFactTextView; private Button mShowFactButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fun_facts);

    // Assign the Views from the layout files to the corresponding variables
    mFactTextView - (TextView) findViewById(R.id.factTextView);
    mShowFactButton = (Button) findViewById(R.id.showFactButton);

    View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {

// The button was clicked, so update the fact TextView with new fact String fact = "This is a fun fact"; mFactTextView.setText(fact); } };

    mShowFactButton.setOnClickListener(listener);
}

public void setFactTextView(TextView factTextView) {
    mFactTextView = factTextView;
}

}

3 Answers

Seth Kroger
Seth Kroger
56,413 Points

The most likely cause is an error in your layout file. R is a special kind of class because it's generated for your project whenever you build. Anything is res is scanned and given a resource id. An error in a res file, like an activity layout would make R fail to generate, causing your errors. If you go back to the layout file in text view, you should see red underlines there to fix.

Sonia Reeder-Jones
Sonia Reeder-Jones
3,785 Points

Thank you for your response. I've checked the layout file and I don't see any errors. Any other suggestions?

Joyce Chidiadi
Joyce Chidiadi
1,867 Points

Can you check your naming for the TextView id in your xml file? Does this error also occur on the showFactButton id?

Pablo Zirilli
PLUS
Pablo Zirilli
Courses Plus Student 3,327 Points

I had the same issue... solved change this:

mShowFactButton = (Button) findViewById(R.id.showFactButton);

by

mShowFactButton = (Button) findViewById(R.id.ShowFactButton);

The capital "S" on ShowFactButton id.

Let me know if this helps you. Grettings