Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Iwantamillion
0 / 0 / 1
Регистрация: 11.07.2014
Сообщений: 3
#1

При проверке элемента массива на пустоту вылетает исключение - Программирование Android

13.07.2014, 20:28. Просмотров 567. Ответов 1
Метки нет (Все метки)

Всем привет.

Есть сервис с задачей (Runnable) определить геолокацию, которая запущена в основном потоке приложения (runOnUiThread()). В сервисе инициализирован строковый массив, который будет содержать геолокацию. Инициализируется он в методе onCreate() сервиса, передается в класс LocationListener через параметры конструктора и там, когда геолокация определится, заполняется.

В другой activity я биндюсь к этому сервису, и по нажатию кнопки запускаю таймер с задачей:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Override
        public void run() {
            try {
                String[] locationData = serviceConnection.serviceLocation().locationData;
                if (locationData[0].isEmpty()) {
                    Log.e("Tag", "locationData isEmpty");
                    return;
                }
                else {
                    Log.e("Tag", "locationData !isEmpty");
                    //location = location(locationData);
                    timer.cancel();
                    dialogWait.dismiss();
                }
            }
            catch(Exception e) {
                timer.cancel();
                dialogWait.dismiss();
                Toast.makeText(context, toastTaskFail, Toast.LENGTH_SHORT).show();
            }
        }
причем, задача выполняется так же в UI потоке:

Java
1
2
3
4
5
6
7
TimerTask tTask = new TimerTask() {
            
            @Override
            public void run() {
                context.runOnUiThread(tTaskRun);
            }
        };
Вот эта строчка срабатывает, присвоение ссылки на массив, находящийся в сервисе происходит хорошо:

Java
1
String[] locationData = serviceConnection.serviceLocation().locationData;
Значит, ссылка не null. Но дальше, при проверки на пустоту элементов этого массива вылетает исключение NullPointerException:

Кликните здесь для просмотра всего текста

07-13 19:55:45.332: E/AndroidRuntime(3140): java.lang.NullPointerException
07-13 19:55:45.332: E/AndroidRuntime(3140): at dangeroussection.functional.serviceuploadtoserver.GetLocation$1.run(GetLocation.java:86)
07-13 19:55:45.332: E/AndroidRuntime(3140): at android.os.Handler.handleCallback(Handler.java:725)
07-13 19:55:45.332: E/AndroidRuntime(3140): at android.os.Handler.dispatchMessage(Handler.java:92)
07-13 19:55:45.332: E/AndroidRuntime(3140): at android.os.Looper.loop(Looper.java:153)
07-13 19:55:45.332: E/AndroidRuntime(3140): at android.app.ActivityThread.main(ActivityThread.java:5299)
07-13 19:55:45.332: E/AndroidRuntime(3140): at java.lang.reflect.Method.invokeNative(Native Method)
07-13 19:55:45.332: E/AndroidRuntime(3140): at java.lang.reflect.Method.invoke(Method.java:511)
07-13 19:55:45.332: E/AndroidRuntime(3140): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
07-13 19:55:45.332: E/AndroidRuntime(3140): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
07-13 19:55:45.332: E/AndroidRuntime(3140): at dalvik.system.NativeStart.main(Native Method)


Подскажите, в чем проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2014, 20:28     При проверке элемента массива на пустоту вылетает исключение
Посмотрите здесь:
Android Программа вылетает не смотря на то что исключение перехвачено
Android Вылетает при прокрутке
Android Вылетает приложение при запуске
Вылетает при создании потока Android
Приложение вылетает при старте на 4.1, на 4.4 - работает Android
Android Программа вылетает при запуске. OutOfMemryError
Android Программа вылетает при прокрутке ListActivity
Программа вылетает при переходе на ListActivity Android
Вылетает приложение при чтении файла Android
При повороте на 90 градусов вылетает программа Android
Вылетает приложение при обращении к серверу Android
Android Вылетает приложении при загрузке шрифта

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
14.07.2014, 12:26     При проверке элемента массива на пустоту вылетает исключение #2
Проблема в недостаточном знании Java и в неумении анализировать ошибки и дебажить код. Советую научится для начала этому а уж потом писать код. Много времени вам сэкономит в будущем
serviceConnection.serviceLocation().locationData - это массив и он не равен null.
а вот его элементы вполне могут быть равны null.
что у вас и происходит когда вы пытаетесь проверить элемент locationData[0] не пустой ли он - Null Pointer Exception
это значит что обьект locationData[0] равен null а вы пытаетесь у его вызвывать метод isEmpty()
Yandex
Объявления
14.07.2014, 12:26     При проверке элемента массива на пустоту вылетает исключение
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru