Android 不允许嵌套事务。在每次beginTransaction()之后使用commitTransaction()。

Android 不允许嵌套事务。在每次beginTransaction()之后使用commitTransaction()。,android,realm,Android,Realm,这是我项目的代码,我使用Realm作为我的数据库 我也遇到过类似的问题,但无法解决,所以把它贴在这里。 这就是我所经历的 我一直得到嵌套错误!有人能帮忙吗。您正在循环/if块中关闭事务。您可能永远不会关闭事务,也可能多次调用commit。此外,如果引发异常,您还可以保持事务打开。您可以在这里看到我们是如何处理这种情况的:super.onpostExecuteSult;?我会加倍它是否需要…我只是重写该方法,但我想获得与领域查询的本地联系。您应该使用executeTransaction,而不是Re

这是我项目的代码,我使用Realm作为我的数据库

我也遇到过类似的问题,但无法解决,所以把它贴在这里。 这就是我所经历的


我一直得到嵌套错误!有人能帮忙吗。

您正在循环/if块中关闭事务。您可能永远不会关闭事务,也可能多次调用commit。此外,如果引发异常,您还可以保持事务打开。您可以在这里看到我们是如何处理这种情况的:

super.onpostExecuteSult;?我会加倍它是否需要…我只是重写该方法,但我想获得与领域查询的本地联系。您应该使用executeTransaction,而不是Realm.beginTransaction和Realm.commitTransaction
@Override
protected void onPostExecute(String result) {

    super.onPostExecute(result);



        if (HttpError.checkStatusSuccessForResponse(statusCode, result))
        {
            Realm realm = Realm.getInstance(ApplicationController.getInstance());
            realm.beginTransaction();

        try {

            JSONObject jsonResult = new JSONObject(result);
            JSONArray jsonArray = jsonResult.getJSONArray("phone_numbers");

            for (int i = 0; i < jsonArray.length(); i++)
            {

                //                  List<R_LocalContactDB> localContactDb = Select
                //                          .from(R_LocalContactDB.class)
                //                          .where(Condition.prop("PHONE").eq(jsonArray.get(i)))
                //                          .list();

                RealmResults<R_LocalContactDB> localContact = realm.where(R_LocalContactDB.class).equalTo("phone",jsonArray.get(i).toString()).findAll();

                if (localContact.size() > 0)
                {

                    R_LocalContactDB localDb = localContact.get(0);
                    localDb.setStatus(1);
                    realm.copyToRealmOrUpdate(localDb);
                    realm.commitTransaction();

                }
            }

            localContactsSyncCallBack.didFinishProfileSync(true, null);

        } catch (JSONException e) {
            Log.d("Server Response ", "Exception " + result);
        }


    }
    else {

        Log.d("Server Response ",
                "Exception "
                        + HttpError
                                .parseErrorFromServer(statusCode, result));

    }

}