声明字符串数组导致问题

时间:2012-02-25 17:46:01

标签: java android string resources

我正在尝试声明一个字符串数组,我将在我的代码中使用它。我已经完成了这两种方式,我认为这两种方式都是可行的选择,但是其中一种方式会导致我的应用程序在加载时崩溃。

工作代码:

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

工作代码:

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

奇怪的是,后面的代码是从Android字符串资源页面直接复制 。我已经确定数组(在本例中标题为Fruit)存在,现在有点丢失了。

我收到的 Log Cat 错误如下:

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)

感谢您的帮助!

编辑:更多Log Cat信息,代码行@已添加崩溃的位置

@崩溃的位置:

Resources res = getResources();

解决方案:

Resources res - getResources();的位置移至onCreate方法。

2 个答案:

答案 0 :(得分:2)

您已在string-array文件中设置string.xml。如果你想使用:

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

尝试在array.xml文件夹中创建values文件,然后放置Fruit数组。

答案 1 :(得分:0)

你得到一个Nullpointer异常。我猜“res”是空的。 System.out.println(res)说什么!?当它显示“null”时,你的res没有正确加载。