Android 获取NullPointer并将对象添加到RealmList

Android 获取NullPointer并将对象添加到RealmList,android,realm,Android,Realm,在Realm数据库Android中尝试向RealmList添加新对象时出现问题。我总是在以下位置收到空指针错误: Global.USER_LOGGED.getProductsGrid().add(pFinal) 这是我的型号: @RealmClass public class UserRealm extends RealmObject implements Serializable { private String email; priva

在Realm数据库Android中尝试向RealmList添加新对象时出现问题。我总是在以下位置收到空指针错误:

Global.USER_LOGGED.getProductsGrid().add(pFinal)

这是我的型号:

    @RealmClass
    public class UserRealm extends RealmObject implements Serializable {

        private String    email;
        private String    password;
        private String    tokenId;
        private String    tokenSecret;
        private String    creationDate;
        private RealmList<ProductRealm> productsGrid;   //Temp table to load category products
        private CartRealm cart;        //One-to-one relationship

    /*GETTERS & SETTERS*/
    ... 
}


    @RealmClass
    public class ProductRealm extends RealmObject implements Serializable {

        private String  catId;   //Only one category per product. In generic case many category per product
        private String  entityId;
        private String  parentId;
        private String  typeId;
        private String  sku;
        private String  canaryProduct;
        private String  premium;
        private String  brand;
        private String  dinitosQty;
        private String  name;
        private String  ean;
        private String  description;
        private String  shortDescription;
        private String  attributeSet;
        private String  weight;
        private String  isSaleable;
        private String  imageUrl;
        private String  unit;
        private String  unitFresh;
        private String  childrenSelected;
        private float   price;
        private float   minWeight;
        private float   quantityWeight;
        private int     quantity;
        private int     stock;
        private int     typeOfAttribute;    //0: Per units | 1: Per weight
        private RealmList<AttributeRealm> attributeItems;
        private RealmList<ProductRealm>   children;  

    /* GETTERS & SETTERS */
    ... 
}
我正在阅读realmdoc,我看到创建RealmList有两种模式:托管和非托管。我试图创建两个,但我总是有相同的错误

如何在数据库中创建对象并分配给RealmList? 我的代码出了什么问题

提前感谢:)

更新:

public static void parseProducts(String result){
        Logs.MessageLogs("parseProducts", result, "v", Global.SHOW_LOGS);
        Object product = null;
        JSONObject json = null;
        ProductRealm pFinal, p = new ProductRealm();

        try {
            json = new JSONObject(result);

            if(Global.USER_LOGGED.getProductsGrid().size() > 0)
                _CRUDDatabase.clearProductsGrid(Global.REALM);

            for (Iterator<?> iterator = json.keys(); iterator.hasNext(); ) {
                String key = (String) iterator.next();
                if (json.get(key) instanceof JSONObject) {    //Category with children
                    product = ((JSONObject) json.get(key));
                    Global.REALM.beginTransaction();
                    pFinal = Global.REALM.createObject(ProductRealm.class);

                    pFinal = _CRUDDatabase.createNewProduct(Global.PREVIOUS_CATEGORY.getId(), product);
                    Global.USER_LOGGED.getProductsGrid().add(pFinal); 
                    Global.REALM.commitTransaction();
                }
            }

        } catch (JSONException e) {
            e.printStackTrace();
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }
我的单身班:

public class Global {
    private static Global instance = null;
...
//Realm
    public static Realm REALM;              //Database Realm
    public static String DATABASE_NAME;     //Name of Realm database
    public static UserRealm USER_LOGGED;            //Object of the user logged

...
private Global() {
//Realm
        REALM   = null;
        DATABASE_NAME = "keymarket.realm";
        USER_LOGGED = null;
...
}

public static Global getInstance(){
        if(instance == null){
            instance = new Global();
        }
        return instance;
    }

在将对象添加到列表之前,您需要将对象添加到域中,因为域内部将调用getId(或获取其主键的任何方法)以便将对象添加到列表中。由于它使用代理方法,并且对象未添加到域中,因此将出现空指针异常。

能否提供堆栈跟踪的其余部分?确定。我将更新我的帖子:)看起来你是从线程访问对象的。注意文档中的这一点:“此外,异步查询目前不受支持。”我从服务器获取产品,当我得到响应时,我解析通过此方法获得的json,但这不是异步查询call@AdaeRodríguez您需要在全局之后调用getInstance。而且单身人士的字段不应该是静态的,我不能投票,但它是有效的!!。你真是个笨蛋!!你们不能投票,但据我所知,你们可以在答案上打上记号:)这和投票一样有帮助。
public class Global {
    private static Global instance = null;
...
//Realm
    public static Realm REALM;              //Database Realm
    public static String DATABASE_NAME;     //Name of Realm database
    public static UserRealm USER_LOGGED;            //Object of the user logged

...
private Global() {
//Realm
        REALM   = null;
        DATABASE_NAME = "keymarket.realm";
        USER_LOGGED = null;
...
}

public static Global getInstance(){
        if(instance == null){
            instance = new Global();
        }
        return instance;
    }