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

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

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

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

13.07.2014, 20:28. Просмотров 577. Ответов 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)


Подскажите, в чем проблема?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2014, 20:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При проверке элемента массива на пустоту вылетает исключение (Программирование Android):

Программа вылетает не смотря на то что исключение перехвачено - Программирование Android
Добрый день, в AsyncTask выполняется загрузка с сервера, все это дело взято в try/catch, последним catch-ем стоит catch(Exception e), на...

Исключение символов при проверке - Visual Basic
В общем, нужно, чтобы по нажатию на кнопку, из текст бокса считывалось слово или фраза, и при соответствии со словом в коде, выдавало...

Вылетает исключение при чтении из файла - C++ WinAPI
Код такой: HANDLE fileHandle; fileHandle = CreateFile("c:\\1.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, ...

Ошибка при проверке элемента структуры - C (СИ)
в общем есть структура. struct rost { char family; char pol; int cm; }; вводим

Вылетает исключение при создании Bitmap по частям - C#
Здравствуйте, проблема такая: принимаю по сети картинку (по частям), части склеиваю в MemoryStream, дальше, чтобы отобразить изображение...

При попытке каста компонента к TObject вылетает AV исключение - Delphi
Всем доброго времени суток Продолжаю "вникать в принципы ООП" - прочитал статью по работе с TObjectList повторил - не работает,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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()
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2014, 12:26
Привет! Вот еще темы с ответами:

При вызове CreateWindow в функции вылетает необработанное исключение (найти и исправить ошибку) - C++
При вызове CreateWindow в функции HRESULT Render_CreateWindow(LPCTSTR wclass, LPCTSTR wname, LPCSTR icon) { // Регистрация класса ...

При заполнении любого DataGridView, отображаемого на любой форме вылетает одно и то же исключение - C#
В общем делаю клиента для БД на Access. И у меня при заполнении любого датагрида,отображаемого на любой форме вылетает исключение одно и...

(GalaSoft.MvvmLight) В одном окне используются 2 ViewModel. Вылетает исключение при создании окна - C# WPF
Здравствуйте. В общем, есть главное окно, DataContext которого: DataContext="{Binding Source={StaticResource Locator}, ...

Ошибка при проверке массива - C++
sf::String *TileMap = new sf::String; for (size_t i = 0; i < 15; i++) { TileMap = " "; } for (int i = 0; i <...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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