android.content.res.Resources $ NotFoundException 가져 오기 : Android에 리소스가있는 경우에도 예외


89

오류가 발생하는 곳을 알려주십시오.

가로 모드에서만 활동하는 앱을 만들고 있습니다. 그래서 AndroidManifest.xml 파일에 다음을 추가했습니다.

<activity android:name=".LandScapeImageActivity" android:screenOrientation="landscape"></activity>

다음과 같은 폴더를 만들었습니다.

/ res / layout-land

여기에 see_today_landscape_layout이라는 레이아웃을 추가합니다.

그리고 onCreate()다음을 추가했습니다.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.see_today_landscape_layout);
....
}

하지만 내 앱을 실행할 때 다음과 같은 오류가 발생합니다.

02-06 13:46:14.358: E/AndroidRuntime(13286): FATAL EXCEPTION: main
02-06 13:46:14.358: E/AndroidRuntime(13286): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mid.kew.activities/com.mid.kew.activities.LandScapeImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4066)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.access$2400(ActivityThread.java:135)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2140)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Looper.loop(Looper.java:144)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.main(ActivityThread.java:4937)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invokeNative(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invoke(Method.java:521)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at dalvik.system.NativeStart.main(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getValue(Resources.java:892)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:1869)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getLayout(Resources.java:731)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Activity.setContentView(Activity.java:1654)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.mid.kew.activities.LandScapeImageActivity.onCreate(LandScapeImageActivity.java:103)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
02-06 13:46:14.358: E/AndroidRuntime(13286):    ... 12 more

나는 R.java 에서 확인했고 예외가 찾고있는 ID 7f03002b의 리소스를 가지고 있으며 거기에 있습니다 ...

5 번 정도 프로젝트를 정리하고 다시 빌드했지만 여전히 문제가 발생합니다.

이상한 점은 이것이 어제 작동했고 오늘은 작동하지 않는다는 것입니다. 코드는 동일합니다.


리소스 ID # 0x7f03002b는 무엇을 의미합니까? see_today_landscape_layout.xml파일 내용을 제공해야 합니다.
a.ch.

예 R.java에 따라 see_today_landscape_layout.xml 참조
Nik


작동 상태를 compile 'com.android.support:appcompat-v7:23.4.0'유지하면 사용하기 위해 업그레이드 할 때이 문제가 발생 v7:22.2.0'했습니다
stephen

답변:


36
  1. Eclipse에서 프로젝트> 정리 ...로 이동하십시오.
  2. 프로젝트를 선택한 다음 확인을 누릅니다.
  3. 앱 다시 시작

다시 발생하면 r.java 파일을 삭제하십시오. 자동으로 생성됩니다.


2
이전에 언급했듯이 ... bin 및 gen 폴더를 지우고 앱을 다시 빌드했습니다. 여전히 작동하지 않습니다 ...
Nik

129
그래도 문제가 해결되지 않았다면 왜 체크 표시가 되었나요?
IcedDante 2014

1
출시 앱에서 이런 일이 발생하면 어떻게하나요?
Dinesh

220

내 조건에 대한 원인은 복용했다 int위해 매개 변수를 TextView. 예를 하나 보여 드리겠습니다

int i = 5;
myTextView.setText(i);

위의 오류 정보를 가져옵니다.

이것은 다음 과 같이 변환 int하여 해결할 수 있습니다.String

myTextView.setText(String.valueOf(i));

를 작성할 때 작성 int중인 텍스트가 아닌 리소스를 기대합니다. 따라서 Android에서 intas 를 설정하는 데주의하십시오 String.


감사합니다, 작동했습니다. num2.setText (lotteryCharacters.charAt (2)); 그런 다음 num2.setText (String.valueOf (lotteryCharacters.charAt (2))); ... 그리고 작동했습니다!
TharakaNirmana 2013 년

1
valueOf (i)와 ""+ i의 차이점이 무엇인지 궁금합니다.
peterb

완전히 예상치 못한, 그레이트 캐치! 감사합니다
gunjot singh 2011

1
XAML 코드는 어떻습니까, 어떻게 값을 설정할 수 있습니까? 내 경우는 XAML에 속성에 대한 소수점 값을 설정해야합니다입니다
zquanghoangz

2
감사합니다. 그 이유는 setText가 String 및 리소스 ID를 모두 허용하는 오버로드 된 메서드이기 때문입니다. 그런 다음 리소스 ID를 찾는 int를 전달합니다
abedfar

12

레이아웃을 명시 적으로 설정하고 있으므로 Android가 자동으로 회전을 처리하도록하려는 경우 / layout-land가 아닌 기본 / layout 폴더에 배치 할 수 있습니다.


1
휴대폰이 세로보기에 있으면 세로로 표시되고 휴대폰을 회전하면 가로로 표시됩니다. 항상 풍경화하려고하십니까? 그런 다음 매니페스트 파일에서 활동 방향을 가로로 설정하거나 코드에서이 질문을 참조하십시오. stackoverflow.com/questions/2150287/…
mbwasi

나는 내 질문에서 언급 한 바와 같이 '<활동이 안드로이드 : 이름 = 안드로이드 : screenOrientation = "풍경" "LandScapeImageActivity합니다."> </ 활동>'고했을

1
configchanges 부분이 누락되었습니다. <activity android : screenOrientation = "landscape"android : configChanges = "orientation | keyboardHidden"android : name = "abcActivty"/>
mbwasi


2

이는 코드에 자산이없는 전화기의 다른 언어로 인해 발생할 수 있습니다. 예를 들어 preferences.xml이 xml-en에 있고 프랑스어를 선택한 휴대 전화에서 앱을 실행하려고하면 앱이 충돌합니다.


항상 기본 자산 폴더를 만든 다음 언어 또는 방향 특정 폴더를 추가하십시오. 이 수 있지만 이상 여기에 :) 경우되지 않을 수도 있습니다
아마드 알리 나시

2

또 다른 이유로 인해이 오류가 발생했습니다.

파일이 res/xml/data.xml있고 다음과 Resources같은 클래스 로로드하려고했습니다 .

Resources.getSystem().getXml(R.xml.data);

그러나 메서드 Resources.getSystem()가 시스템 리소스에만 액세스 할 수있는 전역 공유 리소스 개체를 반환 하므로 이는 올바르지 않습니다 .

올바른 방법은 다음과 같습니다 (활동 내부에서).

this.getResources().getXml(R.xml.data);

그러면 Activity에서 상속하지 않는 최상위 함수 또는 클래스의 리소스에 액세스하는 방법은 무엇입니까?
Vivek Yadav

2

제 경우에는 앱 모듈의 build.gradle에있는 빌드 도구 버전이 이전 프로젝트에서 오래되었습니다. 업데이트하면 문제가 해결되었습니다.

android {
    ...
    buildToolsVersion "19.0.1"
    ...

최신 빌드 도구 버전 (25.0.1)으로 업데이트하고 프로젝트를 동기화했으며 모든 것이 다시 잘되었습니다.


2

수입품이 올바른지 확인하십시오. 내 로컬 파일이 아닌 RAndroid 시스템 R파일을 가리키는 비슷한 문제가 발생했습니다 .


1

build프로젝트 내의 폴더를 삭제 했습니다. Android Studio에서 정리하고 다시 빌드 한 후. 그런 다음 build.gradle 및 AndroidManifest의 오류를 수정했습니다.


1

이로 인해 문제가 발생할 수도 있습니다. 실수로 내 레이아웃 중 하나가 내 태블릿 리소스 폴더에 주차 되었기 때문에이 오류는 휴대폰 레이아웃에서만 발생했습니다. 전화기 레이아웃에는 적절한 레이아웃 파일이 없었습니다.

레이아웃 파일을 올바른 표준 폴더로 이동하고 다음 프로젝트를 다시 빌드 한 후 다시 작업했습니다.


이하시기 바랍니다에 대한 자세한 정보를 제공 할 수 stackoverflow.com/help/how-to-answer을
리치 베너에게

0

가리키는 R이 올바른지 확인하십시오. 프로젝트 파일이 아닌 System R 파일을 가리키는 Eclipse에서 가져 오기를 삽입 한 이와 매우 유사한 문제가 발생했습니다. 머리를 많이 긁적입니다. 도움이 되었기를 바랍니다.


0

xml에서 화면 방향을 가로로 설정했습니다. eclipse를 사용하여이 파일을 생성했다면 res / layout-land / 폴더 아래에 생성되었을 것입니다. 그러나 Portrait 모드 응용 프로그램에서 활동을 열면 res / layout-port / 폴더 또는 일반 res / layout / . 세로 모드 용 xml이 없으면 응용 프로그램이 충돌합니다.


0

이 방법으로 수정했습니다.

리소스 디렉터리 이름에 폴더를 "drawable-nodpi"만든 다음이 디렉터리의 모든 리소스를 다른 드로어 블 디렉터리에서 이동합니다.

이제 프로젝트를 정리 한 다음 다시 빌드하십시오. 다시 실행하면 리소스를 찾을 수 없음 예외없이 이번에는 작동합니다.


이것은 나를 올바른 길로 안내했지만이 게시물을 명심하십시오 : stackoverflow.com/questions/24682094/…
Adrian

0

getInt ( "ID")를 사용하여 One Intent에서 Bundle 데이터에 액세스하려고 할 때이 오류가 발생했습니다.

getString ( "ID")을 사용하여 해결했습니다.

Activity1에서

Intent intent=new Intent(this,ActivityB.class);
intent.putExtra("data",data)// 
startActivity(intent);

활동 B에서

Bundle bundle=getIntent().getExtras();
if(extras!=null){
// int x=extras.getInt("Data"); This Line gave me error int 
x=Integer.parseInt(extras.getString("Data")); // This solved the problem.
}

1
답변을 업데이트하여 문제가 어떻게 해결되는지 설명하고이 5 년 된 질문에 이미있는 찬성 및 수락 된 답변을 개선하십시오. 참조 : 좋은 답변을 작성하는 방법 .
FluffyKitten

그것은 다른 사람에게 도움이 될 수 있도록 답을 지원하기 위해 몇 가지 세부 사항과 설명을 추가하는 것을 고려하십시오
Souvik 고쉬

0

나를 위해 캐시 무효화 및 다시 시작이 작동하지 않았습니다. .idea 및 .gradle 폴더를 제거했습니다. 그렇게한다면 빌드 로그 나 무언가 사라질 수 있다는 사실을 잊지 마십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.