Solutions To The Problem That Cannot Resolve Symbol R

As an Android developer, I usually encounter these problems like ‘ cannot resolve symbol r ‘ in Android.

These are a bit trouble problems, so I collected and want to share some solutions to the ‘ cannot resolve symbol r ‘ problems in Android development.

Q1: compiler error: Cannot resolve symbol ‘R’

I get this compiler error: Cannot resolve symbol ‘R’. I know this question may seem familiar but many other questions related to this problem said that the code could compile despite the error while mine doesn’t, or that the problem could be solved by cleaning the project and/or restarting Android Studio (I use 0.8.6), while in my case that doesn’t work. Import class solves the compiler error but causes my app to crash when I start the activity. The code of the .java containing the error is:

import android.app.Activity;
import android.os.Bundle;

public class TutorialOne extends Activity {

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

I have also read that this may be caused by an error in the layout. Therefore I also include the code of the layout, which shows no compiler errors and is a pure pre-made layout:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”match_parent”
android:layout_height=”match_parent”>

</LinearLayout>

Furthermore, Im following this tutorial:https://www.youtube.com/watch?v=AN5EFviJRR0&list=PLB03EA9545DD188C3&index=10which uses an old version of Eclipse, can this be causing some kind of problem? Thanks and sorry if this is still considered a duplicate post –SOLVED– Im just stupid and, when creating TutorialOne as class, I accidently created the class in the map java instead of com.something.something.

Solution 1:

Check the generated build file R.java. Check the classes and package names.

There might be an issue with it. Rebuild the project from Project > Clean and then select the project you want to clean up. This will build your project and create a new bin folder and regenerate the R.java file.

Q2: cannot resolve symbol R Android DialogFragment

I want create an AlertDialog with a custom XML layout, but in the class I can’t found R variable, why ?

The following is the class :

public class NewTestDialogFragment extends DialogFragment {

public NewTestDialogFragment(){
super();
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.name_dialog, null));

builder.setTitle(“Test”);

builder.setPositiveButton(“Ok”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});

builder.setNegativeButton(“Cancel”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dismiss();
}
});

return builder.create();
}
}

R is not found. If I import R, the application crash.

Solution 2:

You may have changed your application package name in manifest file. Check it then import, clean and then build, then the ‘cannot resolve symbol r’ error will go away.

Q 3: Cannot Resolve R symbol in Android Studio

I encounter “Cannot Resolve R symbol” error in Android Studio.
Solutions To The Problem That Cannot Resolve Symbol R
Android - Cannot resolve symbol "R"
cannot resolve symbol r
Solution 3:

This error comes when the build is not sync properly. Please sync your project by clicking as shown:

cannot resolve symbol r

Q4: Android studio suddenly cannot resolve symbol R

I was having a project open in Android studio. It was generated by the wizard and working fine.

I did some small changes to activity_main.xml and when I changed back to MainActivity.java I get the error in several places that it cannot resolve R.

I might have done something to cause this. But I´m not sure what since it appeared when I edited the xml file.

Solution 4:

Most of the time it is due to a bad XML file. XML files can be layout files, value files, or the Manifest file. Please check your xml files and try to rebuild the project. Sometimes cleaning the project and rebuilding it also works.

Q5: Android – Cannot resolve symbol “R”

I googled some solutions advised to import R. I did thatenter image description hereand I made sure to rebuild/clean my path over 10 times before asking this question.

Here are how my files are arranged:

cannot resolve symbol r

We can all clearly see the error lies somewhere between

MainActivity

file or XML file. Here is the code for the

MainActivity

file , it is pretty much a copy from Google’s git hub account and the ONLY error is it cannot identity what “R” is.:

package com.eatwithme;

/*
* Copyright (C) 2015 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the “License”);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an “AS IS” BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.eatwithme.activities.SampleActivityBase;
import com.eatwithme.logger.Log;
import com.eatwithme.R;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.PendingResult;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.location.places.Place;
import com.google.android.gms.location.places.PlaceBuffer;
import com.google.android.gms.location.places.Places;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;

public class MainActivity extends SampleActivityBase
implements GoogleApiClient.OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks {

/**
* GoogleApiClient wraps our service connection to Google Play Services and provides access
* to the user’s sign in state as well as the Google’s APIs.
*/
protected GoogleApiClient mGoogleApiClient;

private PlaceAutocompleteAdapter mAdapter;

private AutoCompleteTextView mAutocompleteView;
private TextView mPlaceDetailsText;

private static final LatLngBounds BOUNDS_GREATER_SYDNEY = new LatLngBounds(
new LatLng(-34.041458, 150.790100), new LatLng(-33.682247, 151.383362));

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Set up the Google API Client if it has not been initialised yet.
if (mGoogleApiClient == null) {
rebuildGoogleApiClient();
}

setContentView(R.layout.activity_main);

// Retrieve the AutoCompleteTextView that will display Place suggestions.
mAutocompleteView = (AutoCompleteTextView)
findViewById(R.id.autocomplete_places);

// Register a listener that receives callbacks when a suggestion has been selected
mAutocompleteView.setOnItemClickListener(mAutocompleteClickListener);

// Retrieve the TextView that will display details of the selected place.
mPlaceDetailsText = (TextView) findViewById(R.id.place_details);

// Set up the adapter that will retrieve suggestions from the Places Geo Data API that cover
// the entire world.
mAdapter = new PlaceAutocompleteAdapter(this, android.R.layout.simple_list_item_1,
BOUNDS_GREATER_SYDNEY, null);
mAutocompleteView.setAdapter(mAdapter);

// Set up the ‘clear text’ button that clears the text in the autocomplete view
Button clearButton = (Button) findViewById(R.id.button_clear);
clearButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAutocompleteView.setText(“”);
}
});
}

/**
* Listener that handles selections from suggestions from the AutoCompleteTextView that
* displays Place suggestions.
* Gets the place id of the selected item and issues a request to the Places Geo Data API
* to retrieve more details about the place.
*
* @see com.google.android.gms.location.places.GeoDataApi#getPlaceById(com.google.android.gms.common.api.GoogleApiClient,
* String…)
*/
private AdapterView.OnItemClickListener mAutocompleteClickListener
= new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/*
Retrieve the place ID of the selected item from the Adapter.
The adapter stores each Place suggestion in a PlaceAutocomplete object from which we
read the place ID.
*/
final PlaceAutocompleteAdapter.PlaceAutocomplete item = mAdapter.getItem(position);
final String placeId = String.valueOf(item.placeId);
Log.i(TAG, “Autocomplete item selected: ” + item.description);

/*
Issue a request to the Places Geo Data API to retrieve a Place object with additional
details about the place.
*/
PendingResult<PlaceBuffer> placeResult = Places.GeoDataApi
.getPlaceById(mGoogleApiClient, placeId);
placeResult.setResultCallback(mUpdatePlaceDetailsCallback);

Toast.makeText(getApplicationContext(), “Clicked: ” + item.description,
Toast.LENGTH_SHORT).show();
Log.i(TAG, “Called getPlaceById to get Place details for ” + item.placeId);
}
};

/**
* Callback for results from a Places Geo Data API query that shows the first place result in
* the details view on screen.
*/
private ResultCallback<PlaceBuffer> mUpdatePlaceDetailsCallback
= new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if (!places.getStatus().isSuccess()) {
// Request did not complete successfully
Log.e(TAG, “Place query did not complete. Error: ” + places.getStatus().toString());

return;
}
// Get the Place object from the buffer.
final Place place = places.get(0);

// Format details of the place for display and show it in a TextView.
mPlaceDetailsText.setText(formatPlaceDetails(getResources(), place.getName(),
place.getId(), place.getAddress(), place.getPhoneNumber(),
place.getWebsiteUri()));

Log.i(TAG, “Place details received: ” + place.getName());
}
};

private static Spanned formatPlaceDetails(Resources res, CharSequence name, String id,
CharSequence address, CharSequence phoneNumber, Uri websiteUri) {
Log.e(TAG, res.getString(R.string.place_details, name, id, address, phoneNumber,
websiteUri));
return Html.fromHtml(res.getString(R.string.place_details, name, id, address, phoneNumber,
websiteUri));

}

/**
* Construct a GoogleApiClient for the {@link Places#GEO_DATA_API} using AutoManage
* functionality.
* This automatically sets up the API client to handle Activity lifecycle events.
*/
protected synchronized void rebuildGoogleApiClient() {
// When we build the GoogleApiClient we specify where connected and connection failed
// callbacks should be returned, which Google APIs our app uses and which OAuth 2.0
// scopes our app requests.
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, 0 /* clientId */, this)
.addConnectionCallbacks(this)
.addApi(Places.GEO_DATA_API)
.build();
}

/**
* Called when the Activity could not connect to Google Play services and the auto manager
* could resolve the error automatically.
* In this case the API is not available and notify the user.
*
* @param connectionResult can be inspected to determine the cause of the failure
*/
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {

Log.e(TAG, “onConnectionFailed: ConnectionResult.getErrorCode() = ”
+ connectionResult.getErrorCode());

// TODO(Developer): Check error code and notify the user of error state and resolution.
Toast.makeText(this,
“Could not connect to Google API Client: Error ” + connectionResult.getErrorCode(),
Toast.LENGTH_SHORT).show();

// Disable API access in the adapter because the client was not initialised correctly.
mAdapter.setGoogleApiClient(null);

}

@Override
public void onConnected(Bundle bundle) {
// Successfully connected to the API client. Pass it to the adapter to enable API access.
mAdapter.setGoogleApiClient(mGoogleApiClient);
Log.i(TAG, “GoogleApiClient connected.”);

}

@Override
public void onConnectionSuspended(int i) {
// Connection to the API client has been suspended. Disable API access in the client.
mAdapter.setGoogleApiClient(null);
Log.e(TAG, “GoogleApiClient connection suspended.”);
}

}

Also, Here is my my Android Manifest file (with my key removed). Please notice my activity’s name. I did so cause if I remove the

com.eatwithme

before the activity’s name, it gives me an error.

<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.google.playservices.placecomplete"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19"/>
<!– PlacePicker also requires OpenGL ES version 2 –>
<uses-feature
android:glEsVersion=”0x00020000″
android:required=”true”/><uses-permission android:name=”com.google.android.providers.gsf.permission.READ_GSERVICES”/>

<application
android:allowBackup=”true”
android:label=”@string/app_name”
android:icon=”@mipmap/ic_launcher”
android:theme=”@style/AppTheme”>

<meta-data
android:name=”com.google.android.gms.version”
android:value=”@integer/google_play_services_version”/>

<meta-data
android:name=”com.google.android.geo.API_KEY”
android:value=”AnLE”/>

<activity
android:name=”com.eatwithme.MainActivity”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN”/>
<category android:name=”android.intent.category.LAUNCHER”/>
</intent-filter>
</activity>
</application>

I have personally tried my level best but sadly, I am unable to resolve this conflict. The only three sources of error in my opinion could be 1) Have no R file

No R file

2) AndoridManifest file is not right

3) Main file isnt right

4) The order of file isnt right Any guidance on this issue?

Solution 5:

The problem lies in your xml manifest here:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
Wrong --> package="com.example.google.playservices.placecomplete"
android:versionCode="1"
android:versionName="1.0">

It needs to be the exact package name of your project which is:

package="com.eatwithme"

not the google sample package name.