2012-02-25 28 views
0

私は自分のコードで作業する文字列配列を宣言しようとしています。私はこの2つの方法を行っていますが、どちらも実行可能なオプションだと考えられていましたが、私のアプリが失敗してもアプリケーションがクラッシュする原因になります。問題を引き起こす文字列配列の宣言

ワーキングコード:

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) 

はあなたの助けをありがとう!

EDIT:詳細ログキャット情報、クラッシュのコード@場所はクラッシュの場所@

を追加のライン:

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