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

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

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

NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' - Программирование Android

19.11.2015, 15:34. Просмотров 279. Ответов 11
Метки нет (Все метки)

Вылетает приложение из-за этой ошибки.
Сразу скажу, что я в java вообще нуб
есть класс storage для хранения информации через SharedPreferences
( кстати когда я вызываю getSharedPreferences, каждый раз файл настроек считывается ? эт плохо... )
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Storage {
    private SharedPreferences mSettings;
 
    public Storage(Context context, String Storage_name){
        this.mSettings = context.getSharedPreferences(Storage_name, Context.MODE_PRIVATE);
    }
 
    public Map<String, String> get_all(){
 
        Map<String, String> map = new HashMap<String, String>();
 
        String[] lists =
                this.mSettings.getAll().keySet().toArray(new String[0]);
 
        for (String key : this.mSettings.getAll().keySet()) {
            map.put( key, this.get(key) );
        }
 
        return map;
    }
}
далее в активити
Java
1
2
3
4
5
6
7
8
9
10
11
12
Storage storage_user = storage_user(this, 'user');
 
check_user check_user_obj = new check_user();
 
Map<String, String> params = storage_user.get_all(); // достаем ранее сохраненные параметры
 
  for (Map.Entry<String,String> pair : params.entrySet()){ // проходимся по этим параметрам
    check_user_obj.param_add(  pair.getKey(), pair.getValue()); // добавляем в post запрос параметры
    Log.d("123456", "key = " + key + " , value = " + value);
  }
 
 new net(check_user_obj).execute(); // посылаем http запрос
метод param_add в классе check_user
Java
1
2
3
4
5
private List<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>();
 
final public void param_add(String key, String val){
    this.nameValuePairs.add(new BasicNameValuePair(key, val));
}
отваливается в активити на строке check_user_obj.param_add( pair.getKey(), pair.getValue());

я предположил что java не сохраняет объект string при передаче, а хранит на него ссылку поэтому и теряет ее в цикле (но тогда цепочка ссылок все равно должна вести к первоначальному источнику , по другому бред сивой кобылы, тем более java серьезный вроде язык)

В чем может быть проблема и как ее исправить ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2015, 15:34     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()'
Посмотрите здесь:
Android Ava.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] link.stuzer.stattrack.data
Android Ошибка: java.lang.NullPointerException: Attempt to invoke virtual method
Ошибка java.lang.NullPointerException: Attempt to invoke virtual method Android
Java.lang.NullPointerException: Attempt to invoke virtual method именно на версиях начиная с 5 Android
Ошибка Attempt to invoke virtual method on a null object reference Android
Ошибка Attempt to invoke virtual method on a null object reference Android
Ошибка java.lang.NullPointerException Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2454 / 1899 / 590
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
19.11.2015, 15:36     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #2
Цитата Сообщение от gradus Посмотреть сообщение
Storage storage_user = storage_user(this, 'user');
что это должно значить?
gradus
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 41
19.11.2015, 15:41  [ТС]     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #3
Паблито, вы про пропуск, new ? копипастил не акуратно, в коде все норм
Java
1
Storage storage_user = new storage_user(this, 'user');
Pablito
2454 / 1899 / 590
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
19.11.2015, 15:43     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #4
как можно копипастить и не скопировать new ?
но я не об этом...что такое new storage_user, это класс какой-то?
а где он?
gradus
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 41
19.11.2015, 16:00  [ТС]     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #5
Паблито, копипастил кусками (вырезал и переименовывал названия)
вместо:
Java
1
Storage storage_user = storage_user(this, 'user');
в коде:
Java
1
Storage storage_user = new storage(this, 'user');
Pablito
2454 / 1899 / 590
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
19.11.2015, 16:01     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #6
что такое new storage() это класс какой-то?
а где он?
gradus
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 41
19.11.2015, 16:04  [ТС]     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #7
Паблито, самый первый код в моем первом сообщении
Pablito
2454 / 1899 / 590
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
19.11.2015, 16:07     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #8
там нет класса storage
storage и Storage - совершенно разные названия
короче, научись копировать и вставлять текст, не нужно туда лезть руками и что-то редактировать, таким образом ты пускаешь людей, которые собираются тебе помочь, по ложному пути
и сообщение об ошибке польностью скопируй и покажи, ненадо там ничего править
gradus
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 41
19.11.2015, 16:23  [ТС]     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #9
Паблито, я на 99% уверен что вы изначально поняли алгоритм, т.к. речь шла об явной ошибке, а не поиск ее аномальности.
Поэтому делаю выводы что вы либо не в силах мне помочь, либо у вас включен режим принципиального учителя.
В любом случае извиняюсь за кривой копипаст.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
11-19 16:21:57.452 19271-19271/? E/ActivityThread: Performing stop of activity that is not resumed: {com.example.teh/com.example.teh.MainActivity}
11-19 16:21:57.452 19271-19271/? E/ActivityThread: java.lang.RuntimeException: Performing stop of activity that is not resumed: {com.example.teh/com.example.teh.MainActivity}
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3450)
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3531)
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at android.app.ActivityThread.access$1100(ActivityThread.java:156)
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380)
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at android.os.Handler.dispatchMessage(Handler.java:102)
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at android.os.Looper.loop(Looper.java:211)
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at android.app.ActivityThread.main(ActivityThread.java:5389)
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at java.lang.reflect.Method.invoke(Native Method)
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at java.lang.reflect.Method.invoke(Method.java:372)
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
11-19 16:21:57.452 19271-19271/? E/ActivityThread:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
Pablito
2454 / 1899 / 590
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
19.11.2015, 16:25     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #10
Цитата Сообщение от gradus Посмотреть сообщение
я на 99% уверен что вы изначально поняли алгоритм
Цитата Сообщение от gradus Посмотреть сообщение
у вас включен режим принципиального учителя.
точно!
все еще не видя нормального, связанного логически кода я попробую угадать - в map попадает null, а потом при его взятии оттуда возникает ошибка
new BasicNameValuePair(key, val) я не знаю что это за класс, но ему 99% не нравится что в конструктор подают null
gradus
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 41
19.11.2015, 16:29  [ТС]     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #11
Паблито,
Java
1
Log.d("123456", "key = " + pair.getKey()+ " , value = " + pair.getValue());
Эта строка тоже в цикле, в логе нет null.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2015, 16:38     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()'
Еще ссылки по теме:
Android FATAL EXCEPTION: main java.lang.NullPointerException
java.lang.nullpointerexception при создании нового проекта Android
Android Array type expected; found: 'java.lang.string'
Android При нажатии на кнопку выходит ошибка "Attempting to invoke method on a null object reference"
Android Java.lang.OutOfMemoryError

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

Или воспользуйтесь поиском по форуму:
Pablito
2454 / 1899 / 590
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
19.11.2015, 16:38     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' #12
1. эта строка идет ниже check_user_obj.param_add( pair.getKey(), pair.getValue()); так что там все еще возможен null
2. лог ошибки не тот вообще
3. что за класс BasicNameValuePair, а то я его не могу найти?
Yandex
Объявления
19.11.2015, 16:38     NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()'
Ответ Создать тему
Опции темы

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