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