오류가 발생하는 곳을 알려주십시오.
가로 모드에서만 활동하는 앱을 만들고 있습니다. 그래서 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 번 정도 프로젝트를 정리하고 다시 빌드했지만 여전히 문제가 발생합니다.
이상한 점은 이것이 어제 작동했고 오늘은 작동하지 않는다는 것입니다. 코드는 동일합니다.
답변
- Eclipse에서 프로젝트> 정리 …로 이동하십시오.
- 프로젝트를 선택한 다음 확인을 누릅니다.
- 앱 다시 시작
다시 발생하면 r.java 파일을 삭제하십시오. 자동으로 생성됩니다.
답변
내 조건에 대한 원인은 복용했다 int
위해 매개 변수를 TextView
. 예를 하나 보여 드리겠습니다
int i = 5;
myTextView.setText(i);
위의 오류 정보를 가져옵니다.
이것은 다음 과 같이 변환 int
하여 해결할 수 있습니다.String
myTextView.setText(String.valueOf(i));
를 작성할 때 작성 int
중인 텍스트가 아닌 리소스를 기대합니다. 따라서 Android에서 int
as 를 설정하는 데주의하십시오 String
.
답변
레이아웃을 명시 적으로 설정하고 있으므로 Android가 자동으로 회전을 처리하도록하려는 경우 / layout-land가 아닌 기본 / layout 폴더에 배치 할 수 있습니다.
답변
레이아웃 xml res/layout-land
을 res/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)으로 업데이트하고 프로젝트를 동기화했으며 모든 것이 다시 잘되었습니다.