我想聲明一個字符串數組,我將在我的代碼中使用它。我已經完成了這兩種方式,我認爲這兩種方式都是可行的選擇,但是有一種方式會導致我的應用在加載時崩潰而不失敗。聲明導致問題的字符串陣列
工作代碼:
private String[] list = {"apple", "pear"};
不工作代碼:
Resources res = getResources();
private String[] list = res.getStringArray(R.array.Fruit);
奇怪的是,後者的代碼被複制直接從Android字符串資源頁面。我已經確定數組(在這種情況下標題爲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();
的位置寫入onCreate
方法。
在'values'文件夾中是否有一個名爲'array'的xml文件,名爲'Fruit'的字符串數組? – Luksprog 2012-02-25 17:48:37
在'strings.xml'文件裏面,我有一個名爲'Fruit'的'string-array'。 – gkiar 2012-02-25 17:49:27