android - 如何在Realm中存储Drawable文件?

标签 android android-drawable realm

我只想在 Realm 数据库中存储一个 Drawable 图像文件,但在 Realm 对象中分配值后,它显示一条错误消息“错误:不支持字段的类型 android.graphics.drawable.Drawable”。

public class AppsList extends RealmObject {
    public Drawable getAppIcon() {
      return appIcon;
    }
    public void setAppIcon(Drawable appIcon) {
      this.appIcon = appIcon;
    }
}

    Intent i = new Intent(Intent.ACTION_MAIN, null);
    i.addCategory(Intent.CATEGORY_LAUNCHER);

    List<ResolveInfo> availableActivities = manager.queryIntentActivities(
            i, 0);
    for (ResolveInfo ri : availableActivities) {
        realm.beginTransaction();

        appsIconList = realm.createObject(AppsList.class);

        appsIconList.setAppLabel(ri.loadLabel(manager).toString());
        appsIconList.setAppPackageName(ri.activityInfo.packageName.toString());
        appsIconList.setAppIcon(ri.activityInfo.loadIcon(manager).toString());

        realm.commitTransaction();
    }

请仔细阅读我的帖子,让我了解如何在 Realm 数据库中存储可绘制文件。

最佳答案

我认为你做不到。 Realm 仅支持以下类型:

INTEGER,
BOOLEAN,
STRING,
BINARY,
DATE,
FLOAT,
DOUBLE,

引用来源:RealmFieldType.java

实际上,您也可以以整数格式存储可绘制对象的 id,但仍然不建议这样做,因为每次构建项目时都会生成 id,并且它有可能会与您上次保存的内容发生变化。

如果您知道可绘制对象的名称,您还可以将可绘制对象名称存储到 Realm 数据库并使用此代码获取可绘制对象的 id

Resources resources = context.getResources();
int resourceId = resources.getIdentifier(name, "drawable", 
   context.getPackageName());

关于android - 如何在Realm中存储Drawable文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34195222/

相关文章:

android - LogCat 无法显示异常

android - 一个可绘制文件夹中的不同大小的图像(具有相同的名称)

android - 渐变 XML 可绘制中心不起作用

ios - 检查 Realm 列表属性是否包含另一个列表的所有元素

swift - RealmSwift 初始化列表 : Cannot specialize a non-generic definition

Android opengl es YUV to RGB conversion using shaders

android - Admob 最佳实践 : how many times do I request, 我应该展示横幅广告多长时间?

Android联系人自定义字段

android - 在 LayerDrawable 中对所有 RotateDrawables 进行动画处理

ios - 备份和恢复 realm.io 数据库