Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
1

NullPointerException: Attempt to invoke virtual method

26.08.2018, 23:59. Просмотров 361. Ответов 14

Добрый день. При попытке создать приложение с SQLite выдает ошибку
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
для строки:
Goods goods = new Goods(UUID.fromString(uuidString));
Эта строка в коде, реализующем CursorWrapper
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class GoodsCursorWrapper extends CursorWrapper {
 
    public GoodsCursorWrapper(Cursor cursor) {
        super(cursor);
    }
 
    public Goods getGoods(){
 
        String uuidString = getString(getColumnIndex(ShopDbSchema.ShopTable.columnShop.UUID));
        int titleOfGoods = getInt(getColumnIndex(ShopDbSchema.ShopTable.columnShop.TITLEOFGOODS));
        int price = getInt(getColumnIndex(ShopDbSchema.ShopTable.columnShop.PRICE));
 
        Goods goods = new Goods(UUID.fromString(uuidString));
 
        goods.setTitleGoods(titleOfGoods);
        goods.setPrice(price);
 
        return goods;
    }
}

Параметр UUID.fromString(uuidString) принимает значение из столбца ShopDbSchema.ShopTable.columnShop.UUID созданной базы
Сама база заполнена значениями кодом
Java
1
2
3
4
5
6
7
8
9
ContentValues values = new ContentValues();
        Goods g = new Goods();
        
        values.put(ShopDbSchema.ShopTable.columnShop.TITLEOFGOODS, g.getId().toString());
        
        values.put(ShopDbSchema.ShopTable.columnShop.TITLEOFGOODS, "Товар1");
        values.put(ShopDbSchema.ShopTable.columnShop.PRICE, "100");
 
        mSQLiteDatabase.insert(ShopDbSchema.ShopTable.NAME, null, values);
Cтрока values.put(ShopDbSchema.ShopTable.columnShop.TITLEOFGOODS, g.getId().toString()) вставляет сгенерированное рандомное значение UUID из объекта класса Goods
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
public class Goods {
    private int TitleOfGoods;
    private int Price;
    private UUID id;
    private UUID mid;
 
    public Goods(){
        id=UUID.randomUUID();
    }
 
    public UUID getId() {
        return id;
    }
 
    public Goods(UUID uuid) {
         mid = uuid;
    }
 
    public Goods(int titleOfGoods,int price){
        TitleOfGoods=titleOfGoods;
        Price=price;
    }
 
    public int getTitleOfGoods() {
        return TitleOfGoods;
    }
 
    public int getPrice() {
        return Price;
    }
 
    public void setPrice(int price) {
        Price = price;
    }
 
    public void setTitleGoods(int titleOfGoods) {
        TitleOfGoods = titleOfGoods;
    }
}
Кроме того, если я не задействую в приложении UUID база почему-то не заполняется значениями. Она создается, но содержит только заголовки столбцов...
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2018, 23:59
Ответы с готовыми решениями:

Ошибка java.lang.NullPointerException: Attempt to invoke virtual method
Помогите, пожалуйста. Делал приложение на андроид для установки обоев и когда выбираю обои...

Ошибка: java.lang.NullPointerException: Attempt to invoke virtual method
Что исправить ошибку? java.lang.NullPointerException: Attempt to invoke virtual method 'void...

Java.lang.NullPointerException: Attempt to invoke virtual method именно на версиях начиная с 5
приходят ошибки с телфонов именно начиная с версии андройда от 5 вото сам лог буду рад за ответы...

NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()'
Вылетает приложение из-за этой ошибки. Сразу скажу, что я в java вообще нуб :) есть класс storage...

Ava.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] link.stuzer.stattrack.data
// Print out the database as array public String getAllWeapons(){ String dbString = ...

14
vxg
Модератор
3300 / 2094 / 330
Регистрация: 13.01.2012
Сообщений: 8,140
27.08.2018, 07:57 2
Андрей1981, кажется вот тут
Java
1
values.put(ShopDbSchema.ShopTable.columnShop.TITLEOFGOODS, g.getId().toString());
на самом деле должно быть
Java
1
values.put(ShopDbSchema.ShopTable.columnShop.UUID, g.getId().toString());
0
demixdn
27.08.2018, 11:14
  #3

Не по теме:

Андрей1981, почему вы храните объекты UUID в своем товаре? Вы с ними еще что-то делаете кроче того, что преобразовываете в строку и наоборот? Если делаете только эти операции, то зачем вам хранить именно UUID, а не строку, сгенерированную из UUID?

0
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
27.08.2018, 20:11  [ТС] 4
vxg,
да, спасибо, я и не заметил эту оплошность.

но... все равно выдает ту же ошибку, и приложение слетает
0
27.08.2018, 20:11
vxg
Модератор
3300 / 2094 / 330
Регистрация: 13.01.2012
Сообщений: 8,140
27.08.2018, 20:36 5
Андрей1981, какая структура таблицы?
0
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
27.08.2018, 23:04  [ТС] 6
Такая, если я правильно понял вопрос

Java
1
2
3
4
5
6
7
8
9
10
11
public class ShopDbSchema {
    public static final class ShopTable {
        public static final String NAME = "Goods";
 
        public static final class columnShop {
            public static final String UUID = "uuid";
            public static final String TITLEOFGOODS = "title_of_goods";
            public static final String PRICE = "price";
        }
    }
}
Добавлено через 10 минут
Может дело в конструкторах Google?
0
vxg
Модератор
3300 / 2094 / 330
Регистрация: 13.01.2012
Сообщений: 8,140
28.08.2018, 07:32 7
Андрей1981, я имею ввиду- как создаётся таблица? Где sql “create ...”
0
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
28.08.2018, 08:05  [ТС] 8
А... понятно. Вот код создания базы.
Кстати, база создается - только в ней пустое значение UUID.

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
public class ShopBaseHelper extends SQLiteOpenHelper {
    private static final int VERSION = 1;
    private static final String DATABASE_NAME = "shopBase.db";
    public SQLiteDatabase mSQLiteDatabase;
 
    public ShopBaseHelper(Context context) {
        super(context, DATABASE_NAME, null, VERSION);
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + ShopDbSchema.ShopTable.NAME + "(" +
                " _id integer primary key autoincrement, " +
                ShopDbSchema.ShopTable.columnShop.UUID + ", " +
                ShopDbSchema.ShopTable.columnShop.TITLEOFGOODS + ", " +
                ShopDbSchema.ShopTable.columnShop.PRICE +
                ")"
        );
 
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersuin) {
 
    }
}
0
vxg
Модератор
3300 / 2094 / 330
Регистрация: 13.01.2012
Сообщений: 8,140
28.08.2018, 21:30 9
Андрей1981, эм.. а оно ее создаёт без указания типов столбцов?
0
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
28.08.2018, 21:46  [ТС] 10
Если я правильно понял вопрос, DB Browser for SQLite отображает названия только столбцов и их значения. Типов столбцов там не вижу
0
vxg
Модератор
3300 / 2094 / 330
Регистрация: 13.01.2012
Сообщений: 8,140
29.08.2018, 06:32 11
Андрей1981, если типы не указаны то используется BLOB. То как причитаются из него данные через getString вроде зависит от реализации, попробуйте хотябы столбцу UUID явно задать тип TEXT
0
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
29.08.2018, 23:08  [ТС] 12
vxg, извиняюсь, не сразу заметил - DB Browser for SQLite показывает, что UUID присвоен тип TEXT.
0
vxg
Модератор
3300 / 2094 / 330
Регистрация: 13.01.2012
Сообщений: 8,140
30.08.2018, 06:56 13
Андрей1981, и все же я бы попробовал)
0
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
31.08.2018, 20:00  [ТС] 14
vxg, не могли бы Вы уточнить, где тип можно задать явно.
Видно, торможу((
0
vxg
Модератор
3300 / 2094 / 330
Регистрация: 13.01.2012
Сообщений: 8,140
31.08.2018, 20:08 15
Андрей1981, в create после имени поля как для _id вроде
0
31.08.2018, 20:08
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2018, 20:08

Attempt to invoke virtual method on a null
Есть 2 класса. В 1-классе вызываю метод 2-класса. И ошибка: 06-25 10:26:50.207...

Ошибка Attempt to invoke virtual method on a null object reference
Здравствуйте, создаю приложение, которое работает с firebase. При отправке сообщения приложение...

Ошибка Attempt to invoke virtual method on a null object reference
Выдает ошибку. Никак не могу понять в чем проблема. Помогите плиз. Лог ошибки: Caused by:...


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

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

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