PerformFiltering() 期间发生 Android Realm 异常!

2024-03-15

当我使用 Spinner 时,该应用程序运行良好。但是,当我尝试使用 AutoComplete Textview 而不是 Spinner 时,我在其上键入内容时不会显示任何内容。任何帮助表示赞赏。

Logcat 警告:

08-23 14:01:13.485 9542-9542/com.vyshnav.realmexample W/art: Failed to find OatDexFile for DexFile /data/data/com.vyshnav.realmexample/files/instant-run/dex/slice-slice_9-classes.dex ( canonical path /data/data/com.vyshnav.realmexample/files/instant-run/dex/slice-slice_9-classes.dex) with checksum 0x0486ffcc in OatFile /data/data/com.vyshnav.realmexample/cache/slice-slice_9-classes.dex
08-23 14:01:14.237 9542-9542/com.vyshnav.realmexample W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
08-23 14:01:14.769 9542-9595/com.vyshnav.realmexample E/GED: Failed to get GED Log Buf, err(0)
08-23 14:01:14.839 9542-9595/com.vyshnav.realmexample W/MALI: glDrawArrays:714: [MALI] glDrawArrays takes more than 5ms here. Total elapse time(us): 12482
08-23 14:01:20.502 9542-9668/com.vyshnav.realmexample W/Filter: An exception occured during performFiltering()!
                                                            java.lang.IllegalStateException: Realm access from incorrect thread. Realm objects can only be accessed on the thread they were created.
                                                                at io.realm.BaseRealm.checkIfValid(BaseRealm.java:449)
                                                                at io.realm.RealmResults.isLoaded(RealmResults.java:872)
                                                                at io.realm.RealmResults.size(RealmResults.java:372)
                                                                at java.util.AbstractCollection.toArrayList(AbstractCollection.java:348)
                                                                at java.util.AbstractCollection.toArray(AbstractCollection.java:339)
                                                                at java.util.ArrayList.<init>(ArrayList.java:97)
                                                                at android.widget.ArrayAdapter$ArrayFilter.performFiltering(ArrayAdapter.java:456)
                                                                at android.widget.Filter$RequestHandler.handleMessage(Filter.java:234)
                                                                at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                at android.os.Looper.loop(Looper.java:194)
                                                                at android.os.HandlerThread.run(HandlerThread.java:61)
08-23 14:01:35.351 9542-9811/com.vyshnav.realmexample W/Filter: An exception occured during performFiltering()!
                                                            java.lang.NullPointerException: collection == null
                                                                at java.util.ArrayList.<init>(ArrayList.java:94)
                                                                at android.widget.ArrayAdapter$ArrayFilter.performFiltering(ArrayAdapter.java:456)
                                                                at android.widget.Filter$RequestHandler.handleMessage(Filter.java:234)
                                                                at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                at android.os.Looper.loop(Looper.java:194)
                                                                at android.os.HandlerThread.run(HandlerThread.java:61)
08-23 14:01:44.516 9542-9899/com.vyshnav.realmexample W/Filter: An exception occured during performFiltering()!
                                                            java.lang.NullPointerException: collection == null
                                                                at java.util.ArrayList.<init>(ArrayList.java:94)
                                                                at android.widget.ArrayAdapter$ArrayFilter.performFiltering(ArrayAdapter.java:456)
                                                                at android.widget.Filter$RequestHandler.handleMessage(Filter.java:234)
                                                                at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                at android.os.Looper.loop(Looper.java:194)
                                                                at android.os.HandlerThread.run(HandlerThread.java:61)

MinActivity.java:

package com.vyshnav.realmexample;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Spinner;

import io.realm.Realm;
import io.realm.RealmChangeListener;
import io.realm.RealmConfiguration;
import io.realm.RealmResults;
public class MainActivity extends AppCompatActivity {

private Realm realm;
private RealmConfiguration realmConfig;
private String[] listOfStationNames;
ArrayAdapter adapter;
AutoCompleteTextView autoCompleteTextView1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //toolbar
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    //fab
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    listOfStationNames = new String[] {"vvv", "rrr"};
    autoCompleteTextView1= (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);

    // field variable
    RealmResults<Station> stations;
    // field variable
    RealmChangeListener<RealmResults<Station>> changeListener = new RealmChangeListener<RealmResults<Station>>() {
        @Override
        public void onChange(RealmResults<Station> results) {
            // handle onSuccess()
        }
    };


    // Create the Realm configuration                   // In-Memory realm
    realmConfig = new RealmConfiguration.Builder(this).name("myrealm.realm").inMemory().build();
    // Open the Realm for the UI thread.
    realm = Realm.getInstance(realmConfig);

    // Call basicWrite
    basicWrite(realm);

    // Read
    stations = realm.where(Station.class).findAll();
    stations.addChangeListener(changeListener);

    adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,stations);
    autoCompleteTextView1.setAdapter(adapter);


}


private void basicWrite(Realm realm) {

    //(incase of using Callback) watch Slidenerd's approach 'AsyncTask transaction = realm.execute.....' and then closing transaction
    realm.executeTransactionAsync(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            Station station = new Station();
            for(String stationName : listOfStationNames) {
                station.setName(stationName);
                realm.insert(station);
            }
        }
    });}



@Override
protected void onDestroy() {
    super.onDestroy();
    realm.close(); // Remember to close Realm when done.
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

站.java:

package com.vyshnav.realmexample;

import io.realm.RealmObject;

public class Station extends RealmObject {
private String name;

public String getName() {
    return name;
}

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

public String toString(){//overriding the toString() method
    return name;
}
}

评估过滤器publishResults()代替performFiltering(),因为领域查询应该在要访问结果的线程上执行。

你需要覆盖performFiltering的方法ArrayAdapter,有点像这个人做的 https://github.com/realm/realm-java/issues/1726#issuecomment-160932556.

(另外,现在我想了一下,对你来说改变你的想法可能是个好主意ArrayAdapter into a RealmBaseAdapter https://github.com/realm/realm-android-adapters ~ source https://github.com/realm/realm-android-adapters/blob/master/adapters/src/main/java/io/realm/RealmBaseAdapter.java,或者至少处理自动更新RealmChangeListener手动。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PerformFiltering() 期间发生 Android Realm 异常! 的相关文章

随机推荐

  • Tomcat 6 - 请求的资源...不可用

    我正在尝试开始使用 Java 和 Stripes Framework 进行开发 我的 web xml 文件中有以下内容
  • Dropbox sdk 存储库 maven

    即使这听起来像是一个愚蠢的问题 我也无法找到 dropbox sdk 所在的存储库 所以在我的 pom xml 中我声明了这个依赖项
  • 如何在多个 Pod 上挂载相同的持久卷?

    我有一个三节点 GCE 集群和一个具有三个副本的单 Pod GKE 部署 我像这样创建了 PV 和 PVC Create a persistent volume for web content apiVersion v1 kind Pers
  • R 中的时间序列突破/变化/干扰检测:strucchange、changepoint、BreakoutDetection、bfast 等

    我希望这成为 R 中各种时间序列突破 变化 干扰检测方法的路标 我的问题是描述以下每个包的动机和方法差异 也就是说 什么时候使用一种方法比另一种方法更有意义 相似 差异等 有问题的包 结构变化 http cran r project org
  • 从 NXC 中的文件返回负值

    我将值保存到 NXC 不是 eXactly C 中的 csv 文件 然后在稍后的时间点调用它们 我遇到的问题是 当从单元格中调用任何负值时 它会显示为 0123 而不是 123 这会导致我所有的额外计算失败 当前的代码是 OpenFileR
  • X-RequestDigest:运行共享点页面记录的 Web 测试时出现错误

    我已成功记录并重播我的 sharepoint webtest 但一两周后 当我在 Visual Studio 中重播它时 我收到 403 FORBIDDEN 错误 我了解 X RequestDigest 的证书 令牌详细信息已过期 需要在我
  • 如何实现运行时多种策略的使用

    我需要处理从服务返回的记录列表 然而 记录的处理算法根据记录上的某个字段而完全改变 为了实现这一点 我定义了一个 IProcessor 接口 它只有一个方法 public interface IProcessor ICollection
  • 在 Windows 64 中编译 32 位应用程序时无法解析的外部符号

    所以我正在尝试将遗留应用程序从 32 位编译为 64 位 我重新编译了它使用的所有库 并使其查找 WIN SDK6 0A x64 位的库 我在用 Visual Studio 专业版 2008 视觉C dotNet 框架 3 5 SP1 Wi
  • GeoJson c# 示例解析世界上的国家并为每个国家生成Geojson

    寻找如何使用 geojson net 解析 反序列化 Geojson 文件的示例 由于某种原因 没有如何使用 geojson net 包的示例 我想在我的网站上使用它和 google 地图 api 目前我使用多边形形状 但希望转向使用 ge
  • Android 中文本行的垂直 fling 滚动

    我已经实现了 Android Note Pad 示例代码中的编辑器代码 现在我想添加垂直滚动文本行的功能 我想要完成的一个例子是 Andorid 中选项行的快速滚动 我在谷歌上搜索了滚动器和投掷的示例 但找不到任何适合我需要的东西 我还没有
  • 如何将 IP 地址和端口号作为 url 传递

    为了传递 url 我有 ip 地址和端口号 如何将其作为 http url 发送 ex ip address 10 5 90 948 port number as 71 http 10 5 90 948 71 这需要网址吗 如果不是 如何将
  • ASP.NET MVC 记住我

    我有一个基于 ASP NET MVC 4 的项目 可以进行简单的身份验证 我试图让我的网站在用户选中 记住我 复选框时自动登录 但是我在使其正常工作时遇到问题 关闭浏览器并重新打开后 用户永远不会登录 检查后 http forums asp
  • 了解 PHP 中的类

    我正式成为弱智 让我解释 直到今天我才真正考虑过类和它们之间的关系 我试图找出一些看起来很明显的东西 但由于我很愚蠢 所以我看不到它 假设我有一个将从不同文件扩展的核心类 子类如何调用其他兄弟类的函数 也就是说 如果这些类根本被视为子类 示
  • 不使用 com.sun.xml.internal.*?

    以下说法是否属实 com sun xml internal 包顾名思义是一个内部包 用户不应编写依赖于内部 JDK 实现类的代码 此类是 JDK 的内部实现细节 如有更改 恕不另行通知 我的一位同事在他的代码中使用了其中一个类 这导致 An
  • 检测点数组中的形状

    我有一系列的点 我想知道这个点数组是否代表圆形 正方形或三角形 我应该从哪里开始 我使用C 谢谢 乔恩 根据您的问题 解决此问题的一个好方法可能是使用霍夫变换 http en wikipedia org wiki Hough transfo
  • 如果第一个字符是 SQL 中的特定字符,如何删除它

    我目前有一张桌子Telephone它有如下条目 9073456789101 773456789101 0773456789101 我想要做的是只删除所有有 9 的条目开头的 9 但保留其他条目不变 任何帮助将不胜感激 虽然所有其他答案可能也
  • 仅使用代码保存networkD3桑基图

    我在 R 中创建了一个桑基图 使用networkD3包 我想使用代码保存为静态图像 而不是单击 导出 gt 另存为图像 我尝试过的当前代码 使用this https christophergandrud github io networkD
  • 您什么时候开始使用 HTML 5?

    所以 HTML 5 正如预期的那样被广泛宣传2022年准备就绪 http ishtml5readyyet com 这是一个很长的等待时间 而对准备情况的考验是 至少有两个浏览器能够完全通过 HTML 5 测试套件 显然 浏览器要通过此测试
  • Android 中的 Dom xml 解析

    我是android开发新手 我不知道如何从xml解析数据 所以请帮忙 这是我必须解析的 Xml
  • PerformFiltering() 期间发生 Android Realm 异常!

    当我使用 Spinner 时 该应用程序运行良好 但是 当我尝试使用 AutoComplete Textview 而不是 Spinner 时 我在其上键入内容时不会显示任何内容 任何帮助表示赞赏 Logcat 警告 08 23 14 01