Jestem nowicjuszem w Androidzie i mam problem z moją pierwszą aplikacją, którą rozszerzyłem za pomocą Hello World. Logcat jest dołączony. Czy ktoś może pomóc, dlaczego aplikacja jest zamykana?
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
Odpowiedzi:
0 dla odpowiedzi № 1W wierszu nr 40 klasy ScanSMSReceiver.java używasz obiektu Array, którego instancji nie utworzono poprawnie.
Wtedy błąd mówi ci, że próbujeszasccess index 0 z tablicy zawierającej 0 obiektów. Jeśli spróbujesz uzyskać dostęp do indeksu, który jest większy niż 1 liczba przedmiotów (liczba przedmiotów w tablicy -1), to twój program rzuci
java.lang.ArrayIndexOutOfBoundsException
i zawieść program.
Przejrzyj swój kod i sprawdź, gdzie zadeklarowałeś swój obiekt Array i utwórz jego instancję o określonym rozmiarze
int[] myArray = new int[5];
(Lub dowolny rodzaj tablicy, której używasz) Wtedy, gdy spróbujesz uzyskać dostęp do indeksu 0, nie będzie on już ulegał awarii.