2017-12-23 6 views
-3

Beim Einfügen von List in Realm NullPointerException geworfen. Bitte helfen Sie mir, jemand.Realm Einfügen NullPointerException

Können Sie mir empfehlen, für die beste Praxis in Realm DB-Management in Android

Mein Code:

public class DrinksFragment 
     extends Fragment { 

    private Realm realm; 

    @Override 
    public View onCreateView(
      LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_drinks, container, false); 
     Realm.init(getActivity()); 
     realm = Realm.getDefaultInstance(); 
     return view; 
    } 

    public boolean drinksToDB(final List<ProductModel> productModel) { 
     realm.executeTransactionAsync(new Realm.Transaction() { 
      @Override 
      public void execute(Realm bgrealm) { 
       RealmList<ProductModel> realproductList = new RealmList<>(); 
       realproductList.addAll(productModel); 
      } 
     }, new Realm.Transaction.OnSuccess() { 
      @Override 
      public void onSuccess() { 
       Log.d("REALM_DB_INSERT", "Data Inserted"); 
      } 
     }, new Realm.Transaction.OnError() { 
      @Override 
      public void onError(Throwable error) { 
       Log.d("REALM_DB_INSERT", error.getMessage()); 
      } 
     }); 

     return true; 
    } 
} 
+0

@Noise Generator. Sie machen sehr schlechtes Geräusch. Bitte lesen Sie diese Frage vollständig, dann markieren Sie sie –

+0

Sie sollten wirklich lernen, was ein NPE ist und wie es zu beheben ist. –

Antwort

0

ich Rat, den Sie so etwas wie dies zu tun:

Vor allem init Realm sofort nur einmal beim öffnen der app:

public class StartApplication 
      extends Application { 

     @Override 
     public void onCreate() { 
      super.onCreate(); 
      Realm.init(getApplicationContext()); 
     } 
} 

Und dann können Sie Holen Sie das Realm-Objekt auf diese Weise überall hin:

Realm realm = Realm.getDefaultInstance(); 
+0

Ja, ich bin bereits in der Anwendungsklasse –

+0

@NatheemYousuf fertig, so dass Sie Realm.init nicht schreiben müssen (getActivity()); in deinem Fragment. Entferne diese Zeile. – Curio

+0

Kein Glück @Curio java.lang.NullPointerException: Versuch, die virtuelle Methode 'io.realm.RealmAsyncTask io.realm.Realm.executeTransactionAsync (io.realm.Realm $ Transaktion, io.realm.Realm $ Transaktion $ OnSuccess, io. realm.Realm $ Transaction $ OnError) 'auf einem Null-Objekt Referenz –