2012-02-25 4 views
0

코드에서 사용할 문자열 배열을 선언하려고합니다. 나는이 두 가지 방법, 둘 다 가능한 옵션으로 생각했지만, 하나는 내 애플 리케이션을 실패하지 않고 부하에서 충돌하게 만든다.문자열 배열 선언 문제 발생

작업 코드 :

private String[] list = {"apple", "pear"}; 

하지 작업 코드 :

Resources res = getResources(); 
private String[] list = res.getStringArray(R.array.Fruit); 

이상한 것은, 후자의 코드는 안드로이드 문자열 리소스 페이지에서 직접 을 복사 한한다 . 배열 (이 경우 Fruit이라고 표제가 있음)이 존재하고 이제는 일종의 분실되었음을 확인했습니다. 다음과 같이

내가 점점 오전 로그인 고양이 오류는 다음과 같습니다

02-25 12:38:18.015: ERROR/AndroidRuntime(605): FATAL EXCEPTION: main 
02-25 12:38:18.015: ERROR/AndroidRuntime(605): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.ikiar.appname/com.ikiar.appname.Main}: java.lang.NullPointerException 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at android.os.Looper.loop(Looper.java:123) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at java.lang.reflect.Method.invoke(Method.java:521) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at dalvik.system.NativeStart.main(Native Method) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717): Caused by: java.lang.NullPointerException 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at android.content.ContextWrapper.getResources(ContextWrapper.java:80) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at com.ikiar.appname.Main.<init>(Main.java:24) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at java.lang.Class.newInstanceImpl(Native Method) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at java.lang.Class.newInstance(Class.java:1429) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
02-25 12:58:52.284: ERROR/AndroidRuntime(717):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 

여러분의 도움에 감사드립니다!

편집 :

Resources res = getResources(); 

이 솔루션

을 :

이전보다 로그 고양이 정보는 충돌의 코드 @ 위치의 라인 충돌의 위치 @

추가 Resources res - getResources();의 위치는입니다.방법.

+0

'Fruit'이라는 이름의'string-array'가있는'values' 폴더에'array'라는 xml 파일이 있습니까? – Luksprog

+0

'strings.xml' 파일 안에는'Fruit'이라는 문자열 배열이 있습니다. – gkiar

답변

2

string.xml 파일에 string-array을 설정했습니다. 사용하려는 경우

private String[] list = res.getStringArray(R.array.Fruit); 

시도는 values 폴더에 array.xml 파일을 생성하고 Fruit 배열이 넣어.

+0

그 일을 한 후에도 여전히 추락했습니다. :/ – gkiar

+0

@iKiar 당신은'NullPointerException'을 얻을 수있는 정확한 행을 게시 할 수 있습니다. – Luksprog

+0

어리석은 질문입니다. 오류 코드에서 추락 한 정확한 줄을 어떻게 식별 할 수 있습니까? (저는 Java에 비교적 익숙하지 않습니다.) – gkiar

0

Nullpointer 예외가 발생합니다. "res"가 null 인 것 같습니다. System.out.println(res)는 무엇을 말합니다!? 그것이 "null"이라고 말하면 res가 제대로로드되지 않습니다.

+0

이것은 대답이 아닌 주석이어야합니다. (비록 내가 아직 행동을 취하지 않았다는 것을 알지만. :) – Leigh