Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓领域显然在创建列表,但随后表示它';s的尺寸是0_Android_Database_Debugging_Realm_Realm List - Fatal编程技术网

Android 安卓领域显然在创建列表,但随后表示它';s的尺寸是0

Android 安卓领域显然在创建列表,但随后表示它';s的尺寸是0,android,database,debugging,realm,realm-list,Android,Database,Debugging,Realm,Realm List,我正在开发一个android应用程序,它使用领域作为数据库 当用户安装此数据库时,该数据库中已包含一些数据。问题是一些领域对象有一个其他对象的列表,这些对象显然正在创建,因为我在调试器中看到了它,但是当我尝试访问这个列表时,比如realmObject.getList.size()结果输出为0 更具体地说,我有这个模型: public class Muscle extends RealmObject{ @PrimaryKey private int id; privat

我正在开发一个android应用程序,它使用领域作为数据库

当用户安装此数据库时,该数据库中已包含一些数据。问题是一些领域对象有一个其他对象的列表,这些对象显然正在创建,因为我在调试器中看到了它,但是当我尝试访问这个列表时,比如
realmObject.getList.size()结果输出为0

更具体地说,我有这个模型:

public class Muscle extends RealmObject{

    @PrimaryKey
    private int id;

    private String name;

    private RealmList<Routine> routines;

    public Muscle(String name){
        this.id = MyApplication.MuscleID.incrementAndGet();
        this.name = name;
        this.routines = new RealmList<Routine>();
    }

    public Muscle(){}

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public RealmList<Routine> getRoutines() {
        return routines;
    }

}
还有更多,但这是相关的代码。我已经确保每个模型的id自动增加,工作正常,所有肌肉对象都插入到数据库中,我可以在我的应用程序中看到它们没有问题,但是例程显然是创建的,因为我在调试器中看到列表大小增加,id增加,但是当我尝试在适配器中访问它时,比如
int workoutsNumber=muscle.getRoutines().size(),工作次数变为0

我不知道这里有什么问题。在调试过程中,一切看起来都很好,除了一件事我不明白。调试器中的第一件事总是
muscle=找不到局部变量“muscle”

这是一个屏幕截图,您可以看到正在有效地创建对象,例程列表被添加到肌肉对象中,您还可以看到我上面提到的错误:

那么,为什么在执行
int workoutsNumber=muscle.getRoutines().size()时得到0列表大小是否应为3

        Routine cr1 = new Routine(getString(R.string.beginner_chest_1));
        realm.copyToRealmOrUpdate(cr1);

        chest.getRoutines().add(cr1);
应该是

        Muscle chest = new Muscle(getString(R.string.chest));
        Muscle managedChestProxy = realm.copyToRealmOrUpdate(chest);


        Routine cr1 = new Routine(getString(R.string.beginner_chest_1));
        Routine managedRoutineProxy = realm.copyToRealmOrUpdate(cr1);

        managedChestProxy.getRoutines().add(managedRoutineProxy);
应该是

        Muscle chest = new Muscle(getString(R.string.chest));
        Muscle managedChestProxy = realm.copyToRealmOrUpdate(chest);


        Routine cr1 = new Routine(getString(R.string.beginner_chest_1));
        Routine managedRoutineProxy = realm.copyToRealmOrUpdate(cr1);

        managedChestProxy.getRoutines().add(managedRoutineProxy);

工作得很有魅力!非常感谢你。工作得很有魅力!非常感谢你。
        Muscle chest = new Muscle(getString(R.string.chest));
        Muscle managedChestProxy = realm.copyToRealmOrUpdate(chest);


        Routine cr1 = new Routine(getString(R.string.beginner_chest_1));
        Routine managedRoutineProxy = realm.copyToRealmOrUpdate(cr1);

        managedChestProxy.getRoutines().add(managedRoutineProxy);