I have a problem when I try to add a new object to RealmList in Realm database Android. Always I'm getting NullPointer error at:
Global.USER_LOGGED.getProductsGrid().add(pFinal);
This is my models:
    @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 */
    ... 
}
This is the code:
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();
        }
    }
Global.USSER_LOGGED is a Singleton with the currently user logged:
public static UserRealm USER_LOGGED;
Stack trace:
06-23 15:16:32.619 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? java.lang.NullPointerException 
06-23 15:16:32.619 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at io.realm.RealmList.add(RealmList.java:122) 
06-23 15:16:32.619 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at com.singularfactory.ecommerceapp.utility.UtilityDB.parseProducts(UtilityDB.java:283)
06-23 15:16:32.619 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at com.singularfactory.ecommerceapp.fragment.ShopViewPagerFragment.OAuthResponse(ShopViewPagerFragment.java:148)
06-23 15:16:32.623 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at com.singularfactory.ecommerceapp.utility.WebService$getProductsByCategoryIdWithOAuth10a.onPostExecute(WebService.java:239)
06-23 15:16:32.623 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at com.singularfactory.ecommerceapp.utility.WebService$getProductsByCategoryIdWithOAuth10a.onPostExecute(WebService.java:187)
06-23 15:16:32.623 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at android.os.AsyncTask.finish(AsyncTask.java:632) 
06-23 15:16:32.639 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at android.os.AsyncTask.access$600(AsyncTask.java:177)
06-23 15:16:32.639 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
06-23 15:16:32.639 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at android.os.Handler.dispatchMessage(Handler.java:102)
06-23 15:16:32.643 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at android.os.Looper.loop(Looper.java:136) 
06-23 15:16:32.643 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at android.app.ActivityThread.main(ActivityThread.java:5001) 
06-23 15:16:32.643 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at java.lang.reflect.Method.invokeNative(Native Method)
06-23 15:16:32.643 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at java.lang.reflect.Method.invoke(Method.java:515)
06-23 15:16:32.643 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-23 15:16:32.643 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
06-23 15:16:32.643 17555-17555/com.singularfactory.ecommerceapp.ecommerceappW/System.err? at dalvik.system.NativeStart.main(Native Method)
I'm reading Realm doc's and I see that there are two modes to create RealmList: managed and non-managed. I'm trying to create both but I have always same error.
How can I create an object and assign to RealmList in database? What's wrong in my code?
Thanks in advance :)
UPDATE:
My Singleton class:
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;
    }
 
     
    