Объявление строковых массивов, вызывающих проблемы - PullRequest
0 голосов
/ 25 февраля 2012

Я пытаюсь объявить строковый массив, с которым я буду работать в моем коде. Я сделал это двумя способами, оба из которых я считал жизнеспособными, но один из них приводит к аварийному завершению работы моего приложения при загрузке.

Рабочий код:

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

Не Рабочий код:

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

Странно то, что последний код был скопирован напрямую со страницы ресурсов Android String. Я убедился, что массив (в данном случае под названием 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 ]

2 голосов
/ 25 февраля 2012

Вы установили string-array в файле string.xml. Если вы хотите использовать:

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

Попробуйте создать файл array.xml в папке values и поместите в него массив Fruit.

0 голосов
/ 25 февраля 2012

Вы получаете исключение Nullpointer.Я думаю, "Res" является нулем.Что говорит System.out.println(res)?Когда он говорит "ноль", ваш res не загружен должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...