2016-04-26 6 views
2

アンドロイドアプリで作業していて、レルムDBを使用しています。私のアプリは正常に動作しましたが、DBに書き込みたい場合はアプリが停止して、Androidスタジオで入れ子にされた取引は許可されていません

Getting MAX_TEXTURE_SIZE from GradienCache 
Getting MAX_TEXTURE_SIZE from Caches::initConstraints() 
--- 
FATAL EXCEPTION: main 
java.lang.IllegalStateException: Nested transactions are not allowed. Use 
commitTransaction() after each beginTransaction(). 
atio.realm.internal.ImplicitTransaction.promoteToWrite(ImplicitTransaction.java:) 
at io.realm.Realm.beginTransaction(Realm.java:1454) 
at.onClick(AddMedication.java:52) 
    at android.view.View.performClick(View.java:4240) 
at android.view.View$PerformClick.run(View.java:17721) 
     at android.os.Handler.handleCallback(Handler.java:730) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
       at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:5103) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:525) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    at dalvik.system.NativeStart.main(Native Method) 
Could not find class 'android.util.ArrayMap', referenced from method 
com.android.tools.fd.runtime.MonkeyPatcher.monkeyPatchExistingResources 

多くの利用可能なソリューションを試しましたが、問題はまだ解決されていません。

助けてください!

答えて

3

おそらく、あなたはbeginTransaction()を2回呼び出すでしょう。 2番目の呼び出しの前に、最初の呼び出しをコミットまたはロールバックする必要があります。

beginTransaction(); // First call 
try{ 
    doSomeWorkOnDB(); 
    commit(); 
} except (...){ 
    rollback(); 
} 
... 
beginTransaction(); // Second call 
try{ 
    doOtherWorkOnDB(); 
    commit(); 
} except (...){ 
    rollback(); 
} 

希望します。

+0

r.beginTransaction(); r.copyToRealmOrUpdate(投薬); r.commitTransaction(); 私はちょうどオブジェクトからレルムオブジェクトにデータをコピーしたいと思っています。 – Nujud

+0

copyToRealmOrUpdate()メソッド内でbeginTransaction()を呼び出していますか? – Pablo

+0

いいえ、私はそれを使ってメソッドを作ります。 – Nujud

関連する問題