Android Can';无法删除域中的行

Android Can';无法删除域中的行,android,realm,Android,Realm,我是领域编程的初学者。我编写了代码,可以在领域数据库中插入一些值。现在我想检查领域表中的项是否不同。第一次,我按键选择项目,如果存在,我将其删除,然后插入新项目。 这是我的密码 private void insertIntoDatabase() { mRealm.beginTransaction(); mRealm.executeTransaction(new Realm.Transaction() { @Override public void

我是领域编程的初学者。我编写了代码,可以在领域数据库中插入一些值。现在我想检查领域表中的项是否不同。第一次,我按键选择项目,如果存在,我将其删除,然后插入新项目。 这是我的密码

private void insertIntoDatabase()
{
    mRealm.beginTransaction();

    mRealm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            RealmResults<VinScannerHistoryModel> rows =
                    realm.where(VinScannerHistoryModel.class)
                            .equalTo("userName",vinScannerModel.getName())
                            .equalTo("vinNumber",vinNumber.getText().toString())
                            .findAll();
            if(rows!=null)
            {
                rows.clear();
                realm.commitTransaction();

            }
        }
    });


        ImagesObject imagesObject = mRealm.createObject(ImagesObject.class);
        VinScannerHistoryModel vinScannerHistoryModel = mRealm.createObject(VinScannerHistoryModel.class);
        vinScannerHistoryModel.setVinNumber(vinNumber.getText().toString());
        vinScannerHistoryModel.setStatus(status);
        vinScannerHistoryModel.setManufacturer(manufacturer);
        vinScannerHistoryModel.setModel(model);

        vinScannerHistoryModel.setYear(year);

        vinScannerHistoryModel.setVin(vin);
        vinScannerHistoryModel.setTerminal_out_date(terminal_out_date);
        if(Global.imagePath!=null && Global.imagePath.size()>0)
        {
            for (int i = 0; i < Global.imagePath.size(); i++) {
                imagesObject.setImageName(Global.imagePath.get(i));
                vinScannerHistoryModel.getImagesObjects().add(imagesObject);

            }

        }
        if(checkBox.isChecked())
            vinScannerHistoryModel.setKey("1");
        else
            vinScannerHistoryModel.setKey("0");
        vinScannerHistoryModel.setPolygon(polygonAdapter.getItem(spinnerPosition).getId()+"");
        vinScannerHistoryModel.setUserName(vinScannerModel.getName());
    mRealm.commitTransaction();
}
我不知道什么是错误的,我怎样才能解决这个问题? 附笔 正如我所说,我是初学者领域编程,在您的选择中,删除数据库中的重复项是否正确
谢谢

例外的文字很清楚,不是吗?您不能在事务内部启动事务

mRealm.beginTransaction();

RealmResults<VinScannerHistoryModel> rows =
        realm.where(VinScannerHistoryModel.class)
                .equalTo("userName", vinScannerModel.getName())
                .equalTo("vinNumber", vinNumber.getText().toString())
                .findAll();
if (rows != null) {
    rows.clear();
}
....
....
mRealm.beginTransaction();
RealmResults行=
realm.where(VinScannerHistoryModel.class)
.equalTo(“用户名”,vinScannerModel.getName())
.equalTo(“vinNumber”,vinNumber.getText().toString())
.findAll();
如果(行!=null){
行。清除();
}
....
....

这是一个正确的答案。我自己解决了

RealmResults<VinScannerHistoryModel> results
            = mRealm.where(VinScannerHistoryModel.class)
            .equalTo("userName",vinScannerModel.getName())
            .equalTo("vinNumber",vinNumber.getText().toString())
            .findAll();

    mRealm.beginTransaction();
    if(results!=null)
        results.clear();
RealmResults结果
=mRealm.where(VinScannerHistoryModel.class)
.equalTo(“用户名”,vinScannerModel.getName())
.equalTo(“vinNumber”,vinNumber.getText().toString())
.findAll();
mRealm.beginTransaction();
如果(结果!=null)
结果:清晰();

如何删除项目,然后添加新项目?先删除项目,然后添加新项目。我尝试先删除项目,然后添加新项目,但出现崩溃。您能否显示没有崩溃的代码?显示异常堆栈跟踪。
mRealm.beginTransaction()
mRealm.executeTransaction()
都启动一个新事务,除了
executeTransaction()
还通过取消事务处理异常,而不仅仅是让它停留。至于“删除重复”?使用
@PrimaryKey
以避免“重复”
RealmResults<VinScannerHistoryModel> results
            = mRealm.where(VinScannerHistoryModel.class)
            .equalTo("userName",vinScannerModel.getName())
            .equalTo("vinNumber",vinNumber.getText().toString())
            .findAll();

    mRealm.beginTransaction();
    if(results!=null)
        results.clear();