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

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

가로 모드에서만 활동하는 앱을 만들고 있습니다. 그래서 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 번 정도 프로젝트를 정리하고 다시 빌드했지만 여전히 문제가 발생합니다.

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



답변

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

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


답변

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

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

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

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

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

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


답변

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


답변

레이아웃 xml res/layout-landres/layout폴더로 이동하십시오.


답변

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


답변

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

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

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

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

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

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


답변

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

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

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