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

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

Войти
Регистрация
Восстановить пароль
 
Путин
42 / 22 / 6
Регистрация: 14.04.2011
Сообщений: 578
#1

Вылетает приложение. string.split() - Программирование Android

22.12.2014, 14:44. Просмотров 406. Ответов 10
Метки нет (Все метки)

Есть обычный текстовый файл, в нем строки вида:
Код
Param1 = value
Хочу их разделить в массив, делаю:
Java
1
2
mLine = reader.readLine();
java.util.Arrays.toString(mLine.split("=")); // Вылет
Не могу понять причину вылета.
если сделать просто
Java
1
mLine.split("=");
без записи куда либо - тоже вылет...
mLine не пуст там точно есть строка.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2014, 14:44     Вылетает приложение. string.split()
Посмотрите здесь:

string.split - Программирование Android
Имею string = "ПОНЕДЕЛЬНИК. 10 Февраль. TLC HD" Проделываем String CannelParse = string.split("."); String vgd = string.split("...

Вылетает сетевое приложение - Программирование Android
Есть такой код: //устанавливаем соединение URLConnection conn = null; try { if (p) conn = new URL(url + "?" +...

Вылетает приложение от 4.4 и ниже - Программирование Android
Создал проект в Android Studio c Navigation Dravel Acticity выбрал 4.0.(4.4 пробовал) Ничего не добавлял запустил на эмуляторе скинул в...

Подписанное приложение вылетает - Программирование Android
Кто-нибудь сталкивался с таким? Есть рабочее приложение, тестится в эмуляторе и на нескольких реальных устройствах с разными разрешениями и...

Вылетает созданное приложение - Программирование Android
TextView t1; TextView fy; TextView fm; TextView fd; TextView sy; TextView sm; TextView sd;

Парсер html, вылетает приложение - Программирование Android
Читал на хабре статью о парсинге stackoverflow http://habrahabr.ru/post/115127/. Создал проект, сделал все как было написано, но при...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
22.12.2014, 14:55     Вылетает приложение. string.split() #2
Путин, Владимир Владимирович, а если перед mLine.split("="); написать что-нибудь типа mLine = "Param1 = value"; то тоже вылетит?
Путин
42 / 22 / 6
Регистрация: 14.04.2011
Сообщений: 578
22.12.2014, 15:10  [ТС]     Вылетает приложение. string.split() #3
Цитата Сообщение от CoolMind Посмотреть сообщение
Путин, Владимир Владимирович, а если перед mLine.split("="); написать что-нибудь типа mLine = "Param1 = value"; то тоже вылетит?
так почему то тогда зависает, а если в новую переменную записать:
Java
1
2
String mLine2 = "Param1 = value";
String[] arrays = mLine2.split("=");
тогда работает, что за чудеса?

Java
1
2
3
4
private java.util.Map<String, String> TEXT;
public MainActivity MA;
public android.content.res.AssetManager AM;
private java.io.BufferedReader reader = null;
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
private void generateT()
{
    try
    {
        reader = new java.io.BufferedReader(
                new java.io.InputStreamReader(AM.open("Lang_RUS"), "UTF-8"));
        String mLine = reader.readLine();
        while (mLine != null)
        {
            mLine = reader.readLine();
            if (!mLine.isEmpty())
            {
                String[] arrays = mLine.trim().split("="); 
                MA.toast__(arrays[0].trim()); // Вылет
                MA.toast__(arrays[1].trim());
            }
            /*if (!mLine.isEmpty())
                TEXT.put(key, value)*/
        }
    }
    catch (java.io.IOException e)
    {
        MA.toast__(e.getMessage());
    }
    finally
    {
        if (reader != null)
        {
             try
             {
                 reader.close();
             }
             catch (java.io.IOException e)
             {
                 MA.toast__(e.getMessage());
             }
        }
    }
    return;
}
Java
1
2
3
4
public void toast__(String text)
{
    android.widget.Toast.makeText(getApplicationContext(), text, android.widget.Toast.LENGTH_SHORT).show();
}
P.S.: private void generateT() в другом классе.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
22.12.2014, 16:04     Вылетает приложение. string.split() #4
Путин, на мой взгляд, вы неправильно обращаетесь к MainActivity либо её контексту, и вылет происходит при попытке отобразить toast. По возможности, не используйте getApplicationContext().
Путин
42 / 22 / 6
Регистрация: 14.04.2011
Сообщений: 578
22.12.2014, 16:32  [ТС]     Вылетает приложение. string.split() #5
Цитата Сообщение от CoolMind Посмотреть сообщение
Путин, на мой взгляд, вы неправильно обращаетесь к MainActivity либо её контексту, и вылет происходит при попытке отобразить toast. По возможности, не используйте getApplicationContext().
Вылетает здесь:
Java
1
String[] arrays = mLine.trim().split("=");
не там пометил...
Perikl
6 / 6 / 2
Регистрация: 05.02.2014
Сообщений: 13
22.12.2014, 16:52     Вылетает приложение. string.split() #6
Попробуйте выводить содержимое mLine в лог перед этой процедурой. Вы проверяете строку на !isEmpty, но потом делаете trim(), который может вернуть пустую строку.
Путин
42 / 22 / 6
Регистрация: 14.04.2011
Сообщений: 578
22.12.2014, 18:10  [ТС]     Вылетает приложение. string.split() #7
Работаю через реальное устройство, но Eclipse его не видит, хотя драйвера есть, поэтому отлаживать могу только на виртуальном андроиде, только вот написал он мне ошибки, а я таки не могу понять что же ему не понравилось:
Отладка на скрине уже вот с таким вариантом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
private void generateT()
{
    try
    {
        reader = new java.io.BufferedReader(
                new java.io.InputStreamReader(AM.open("Lang_RUS"), "UTF-8"));
        String mLine = reader.readLine();
        while (mLine != null)
        {
            mLine = reader.readLine().trim();
            if (!mLine.isEmpty())
            {
                java.io.File file = new java.io.File("/sdcard/N5.txt");
                if(!file.exists())
                    file.createNewFile();
                java.io.FileWriter fileWritter = new java.io.FileWriter(file.getAbsolutePath(),true);
                try
                {
                    java.io.BufferedWriter bufferWritter = new java.io.BufferedWriter(fileWritter);
                    bufferWritter.write("mLine = \"" + mLine + "\", trying \"split()\"\r\n");
                    bufferWritter.close();       
                    bufferWritter = null;
                }
                finally
                {
                    fileWritter.close();                        
                }
                fileWritter = null;
                
                //MA.toast__(mLine);
                //String[] arrays = mLine.split("=");  // Вылет
                /*MA.toast__(arrays[0].trim());
                MA.toast__(arrays[1].trim());*/
            }
            /*if (!mLine.isEmpty())
                TEXT.put(key, value)*/
        }
    }
    catch (java.io.IOException e)
    {
        MA.toast__(e.getMessage());
    }
    finally
    {
        if (reader != null)
        {
             try
             {
                 reader.close();
             }
             catch (java.io.IOException e)
             {
                 MA.toast__(e.getMessage());
             }
        }
    }
    return;
}
Файл создает и записывает строку, все хорошо, все как надо, но приложение вылетает во время запуска.
Миниатюры
Вылетает приложение. string.split()  
Путин
42 / 22 / 6
Регистрация: 14.04.2011
Сообщений: 578
22.12.2014, 18:11  [ТС]     Вылетает приложение. string.split() #8
TextController 30 строка это как раз:
Java
1
mLine = reader.readLine().trim();
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
22.12.2014, 18:15     Вылетает приложение. string.split() #9
Путин, вероятно, reader == null или reader.readLine() == null.
Путин
42 / 22 / 6
Регистрация: 14.04.2011
Сообщений: 578
22.12.2014, 19:08  [ТС]     Вылетает приложение. string.split() #10
Цитата Сообщение от CoolMind Посмотреть сообщение
Путин, вероятно, reader == null или reader.readLine() == null.
Java
1
2
3
4
if (reader == null) mLine = "reader == null";
else    mLine = reader.readLine();
if (mLine.length() > 0) mLine.trim(); // Fatal error
else    mLine = "reader.readLine() == null";
не желает он пробелы убирать

Добавлено через 9 минут
сидя под отладчиком выяснилось, что если mLine == null, то если я попытаюсь поверить пуст он или нет ".isEmpty()", вываливается исключение...

проблема решена!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2014, 09:59     Вылетает приложение. string.split()
Еще ссылки по теме:

Приложение вылетает с непонятной ошибкой - Программирование Android
package x.com.geoquiz; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import...

Из-за какой-то ошибки вылетает приложение - Программирование Android
При нажатии на кнопку button9 (функция changeWay) происходит какая-то ошибка и вылетает приложение. package...

ListView в ListViev, приложение вылетает - Программирование Android
мне нужно поместить один ListView в строку другого, вот код: ListView list = (ListView)findViewById(R.id.listView1); ...

Вылетает приложение при обращении к серверу - Программирование Android
Обращаюсь к серверу для получения списка продуктов. Сервер проверил, JSON ответ в порядке, на IOS работает без проблем. В случае с андроид...


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

Или воспользуйтесь поиском по форуму:
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
23.12.2014, 09:59     Вылетает приложение. string.split() #11
Путин, рад за вас.
Можно делать, например, такую проверку:
Java
1
2
if (mLine == null || mLine.isEmpty())
    ....
Yandex
Объявления
23.12.2014, 09:59     Вылетает приложение. string.split()
Ответ Создать тему
Опции темы

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