본문 바로가기

StackOverflow

[Android] R cannot be resolved 에러가 나옵니다. 어떻게 해결해야 하나요?

Q: R cannot be resolved 에러가 나옵니다.

안드로이드 SDK를 새롭게 다운로드 받아서, 아래와 같은 예제코드를 만들어보았습니다.

package eu.mauriziopz.gps;

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

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

그런데, 이클립스에서 아래와 같은 에러가 나오고 있습니다.

R cannot be resolved


이 에러는 아래 라인에서 발생합니다.

setContentView(R.layout.main);


왜 이런가요? 

추신: 저는 XML 파일을 main.xml 으로 지정했고, 경로는 res/layout 입니다.

(질문자: MaurizioPz, 커뮤니티 위키)



A: 이 문제를 해결하기 위해 조사를 해 보니, 아래와 같은 안드로이드 문서를 찾을 수 있었습니다.

http://source.android.com/source/using-eclipse.html

*주의: 이클립스는 가끔 "import android.R" 구문을 리소스 파일로 추가하는데, 자동으로 import를 하거나, 라인 정렬을 할 때 이런 일이 발생합니다. 이 구문이 빌드를 실패하게 만듭니다.  이 잘못된 import를 주의하시고, 제거하시기 바랍니다.*

안드로이드 샘플 예제를 보면서, 저는  Ctrl + Shift + O 를 이용하여 자동으로 import 하는 일이 많습니다. 가끔 이 기능이 오작동하여, 빌드 과정에서 만들어진 정상적인 R 대신 안드로이드의 R을 import하는 일이 있습니다.

(답변자: Michael Levy, 커뮤니티 위키)



A: R에 문제가 있거나, 생성되지도 않는 경우에는 XML 파일에 문제가 있어 정상적으로 빌드가 되지 않는 경우입니다. 

(답변자: Luc, 커뮤니티 위키)


_

I just downloaded and installed the new Android SDK. I wanted to create a simple application to test drive it.

The wizard created this code:

package eu.mauriziopz.gps;

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

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

but Eclipse gives me the error

R cannot be resolved

on line

setContentView(R.layout.main);

Why?

PS: I do have an XML file named main.xml under res/layout/.

shareeditflag

_

After tracking down this problem as well, I found this note in the Android documentation:

http://source.android.com/source/using-eclipse.html

*Note: Eclipse sometimes likes to add an "import android.R" statement at the top of your files that use resources, especially when you ask Eclipse to sort or otherwise manage imports. This will cause your make to break. Look out for these erroneous import statements and delete them.*

While going through the Android sample tutorials, I would often use the Ctrl + Shift + O command to "Organize Imports" and generate any missing import statements. Sometimes this would generate the incorrect import statement which would hide the R.java class that is automatically generated when you build.

_

Each time I had a problem with R not been generated, or even disappeared, this was due to some problem in the XML layout file that prevented the application from being built.

shareeditflag