1
Fatal Exception: java.lang.ArrayIndexOutOfBoundsException
Out of range in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsResults.cpp line 108(requested: 0 valid: 0) io.realm.internal.OsResults.nativeGetRow

MainActivity.randomizeEvents (MainActivity.java:1600)
...MainActivity$42.run (MainActivity.java:1739)

随机事件()

public void randomizeEvents() {
    Realm nrealm;
    nrealm = Realm.getDefaultInstance();
    RealmResults<Event> eventList = nrealm.where(Event.class).equalTo("theevent", "theevent").findAll();
    if(eventList.size() != 0) {
        evt = eventList.get(0); <<<<<<<<<line 1600
        nrealm.beginTransaction();
        evt.setDurations();
        nrealm.commitTransaction();
    }

}

方法启动 Runnable

RealmResults<Event> eventList = realm.where(Event.class).equalTo("theevent", "theevent").findAll();
    evt = eventList.get(0);

    if(!eventTimerRunning) {
        runnable = new Runnable() {
            public void run() {
                if(!realm.isClosed()) {
                    eventTimerRunning = true;
                    randomizeEvents(); <<<<<<<<line 1739
                    handler.postDelayed(runnable, 30000);
                }
            }
        };
        handler.postDelayed(runnable, 5000);
    }

我在不同的部分都遇到了这个错误,但他们都在做同样的事情。我有Runnable不同的东西。例如,这个将在初始延迟后每 30 秒运行一次该方法。由于在 UI 线程上使用一个实例和在其他线程上使用一个实例的错误,我正在使用Realmin 的一个新实例。Runnablerunnable

if语句if(eventList.size() != 0)的大小为 1+。为什么会eventList.size()等于 1 或更多,但仍然得到关于eventList.get(0)为空的错误?

4

1 回答 1

0

你应该使用

eventList.size() 

代替

eventList.size
于 2018-06-15T05:57:44.347 回答