我正在开发一个包含类似于QuickJournal
示例代码的主/详细视图的项目。主视图GridView
绑定到集合,详细视图绑定到集合中的单个项目。
当我从主视图导航到详细视图时,我正在开始一个新的Transaction
。如果我对详细视图进行更改并保存项目(提交事务),它将导航回主视图,一切正常。
我的问题是,如果我没有对详细信息视图进行任何更改并尝试使用后退按钮导航回母版页,则会出现异常“无法在事务外设置值” 。我尝试了几种不同的方式:
1)_trans.Dispose();
详见页面OnNavigatingFrom
处理程序(如上所述)
2)_trans.Rollback();
在详细信息页面中与上述相同
3)导航时保持交易开放;导航回母版页时不会抛出异常,而是在尝试再次返回详细信息页面时抛出异常,因为已经有一个打开的事务
4)在导航回主视图之前,将当前数据绑定项设置为null
;这会导致不同的问题,因为您无法绑定到null
我已经看到有一个Realm.DataBinding
包应该根据需要自动处理事务,但我找不到它的用法示例。有没有办法绕过这个问题而不制作相关对象的副本并在详细视图中使用它,如果你不进行任何更改就抛弃它?