-2

私はアンドロイドが初めてで、Hello World を使用して拡張した最初のアプリケーションに問題があります。Logcat が追加されます。アプリケーションがシャットダウンする理由を教えてください。

09-27 19:05:57.442: E/AndroidRuntime(528): FATAL EXCEPTION: main
09-27 19:05:57.442: E/AndroidRuntime(528): java.lang.RuntimeException: Unable to start receiver com.livelihood.hello.world.ScanSMSReceiver: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
09-27 19:05:57.442: E/AndroidRuntime(528):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2126)
09-27 19:05:57.442: E/AndroidRuntime(528):  at android.app.ActivityThread.access$1500(ActivityThread.java:123)
09-27 19:05:57.442: E/AndroidRuntime(528):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1197)
09-27 19:05:57.442: E/AndroidRuntime(528):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-27 19:05:57.442: E/AndroidRuntime(528):  at android.os.Looper.loop(Looper.java:137)
09-27 19:05:57.442: E/AndroidRuntime(528):  at android.app.ActivityThread.main(ActivityThread.java:4424)
09-27 19:05:57.442: E/AndroidRuntime(528):  at java.lang.reflect.Method.invokeNative(Native Method)
09-27 19:05:57.442: E/AndroidRuntime(528):  at java.lang.reflect.Method.invoke(Method.java:511)
09-27 19:05:57.442: E/AndroidRuntime(528):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-27 19:05:57.442: E/AndroidRuntime(528):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-27 19:05:57.442: E/AndroidRuntime(528):  at dalvik.system.NativeStart.main(Native Method)
09-27 19:05:57.442: E/AndroidRuntime(528): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
09-27 19:05:57.442: E/AndroidRuntime(528):  at com.livelihood.hello.world.ScanSMSReceiver.onReceive(ScanSMSReceiver.java:40)
09-27 19:05:57.442: E/AndroidRuntime(528):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2119)
09-27 19:05:57.442: E/AndroidRuntime(528):  ... 10 more
4

1 に答える 1

0

ScanSMSReceiver.java クラスの 40 行目で、適切にインスタンス化していない Array オブジェクトを使用しています。

次に、エラーは、オブジェクトが 0 個ある配列からインデックス 0 にアクセスしようとしていることを示しています。項目数よりも 1 少ない数 (配列内の項目数 -1) のインデックスにアクセスしようとすると、プログラムは

java.lang.ArrayIndexOutOfBoundsException

そしてあなたのプログラムをクラッシュさせます。

コードを調べて、Array オブジェクトを宣言した場所を確認し、特定のサイズでインスタンス化します

int[] myArray = new int[5];

(または、使用している配列のタイプに関係なく)次に、インデックス 0 にアクセスしようとすると、クラッシュしなくなります。

于 2012-09-27T14:39:14.593 に答える