Android - Cannot resolve character "R"

Many stackoverflow answers advise importing R. I did this enter image description here and I tried rebuilding / clearing my path more than 10 times before asking this question.

Here's how my files are organized: enter image description here

We can all see that the error lies somewhere between the MainActivity file or the XML file.

Here is the code for the MainActivity file, this is pretty much a copy from the Google git hb server account, and ONLY the error cannot identify 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 sign in state as well as the Google 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 Android Manifest file (with remote key). Please pay attention to my activity name. I made it so that if I delete com.eatwithme before the activity name, this will result in 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 personally tried my level better, but, unfortunately, I can’t resolve this conflict. The only three sources of error, in my opinion, can be

1) Does not have an R file

No r file

2) AndoridManifest file is not right

3) The main file is wrong 4) The file order is wrong

Any recommendations on this issue?

+6
source share
8 answers

The problem is your xml manifest:

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

This should be the exact package name of your project:

 package="com.eatwithme" 

not the name of the Google sample package.

+4
source
 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.google.playservices.placecomplete" 

Change this package name to the package name of the iecom.eatwithme package.

+1
source

I have not read all your code - sorry :)

I recommend that you delete your import R. If you are sure that you have all your files in the right places, do as @AbhishekVasisht suggested and “clean up the project” (in Android Studio you click “Build”> “Clear project”, I forgot where it is in Eclipse).

If this does not work, you can also try what is called "invalidate caches and restart". This is a bit extreme because it gets rid of your local history for the project, but it looks like you have reached a point of despair. In Android Studio, you click File> "Invalidate Caches / Restart ..." and you want to select a parameter that cancels and restarts everything in the same action.

As a last resort, you can try to import the existing code as a new Android project. This is a shitty shot, but it worked for me a couple of times in the past.

Good luck Sorry, I know how this can be frustrating.

+1
source

I do not have enough links to add comments, otherwise it will be a comment.

From my personal experience, try performing a “clean and rebuild”, this once clears this error.

Hope some other people can support me with this

0
source

if you are new to udacity android app development and learning lesson 2A / 5th theme and problem occurs when you start compiling the MainActivity.java code, then enter the code below in MainActivity.java the code is below

  package com.example.android.justjava; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void submitOrder(View view) { display(1); } private void display(int number) { TextView quantityTextView = (TextView) findViewById( R.id.quanity_text_view); quantityTextView.setText("" + number); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } 
0
source

Make sure all your XML files have valid resources, images, etc. and Clean Project.

I updated my project from GitBucket, and one .png somehow disappeared, so I got this error and that R was missing. I focused on solving R's problem and wasted a couple of hours on it, and when I put a random .png instead of the missing one and cleaned up the project, R came back.

0
source

Late answer and another solution. I thought someone needed it.

I used Gradle 3.3.0. This was the main culprit. 6.50 hours from my life wasted. Gradle 3.2.1 fixed the error.

 classpath 'com.android.tools.build:gradle:3.2.1' 
0
source

I ran into the same problem. My solution was that the path to the directory in which I saved my project was too long.

-1
source

Source: https://habr.com/ru/post/985744/


All Articles