【问题标题】:Java Realm Out of Range ExceptionJava 领域超出范围异常
【发布时间】:2018-06-14 22:34:04
【问题描述】:
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)

randomizeEvents()

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 秒运行一次该方法。我在Runnable 中使用Realm 的一个新实例,因为在UI 线程上使用一个实例和在runnable 上使用一个实例时出错等。

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

【问题讨论】:

标签: java android realm runnable realm-java


【解决方案1】:

你应该使用

eventList.size() 

而不是

eventList.size

【讨论】:

  • 这是一个错字,真实代码使用size()方法。不过谢谢,编辑以反映这一点
猜你喜欢
  • 1970-01-01
  • 2014-11-12
  • 2014-03-06
  • 2012-11-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多