gpt4 book ai didi

java - Realm 无效类型

转载 作者:行者123 更新时间:2023-12-01 19:29:17 26 4
gpt4 key购买 nike

我尝试使用 Realm 在我的 Android 应用程序中制作愿望 list 。我将数据从适配器放入 SinglePost Activity,并尝试将它们放入 Realm 并显示在另一个 Activity 中。在 SinglePost Activity 中我收到此错误!这是我的 Activity

public class SinglePost extends AppCompatActivity {
String id, image, url, content, video;
Realm realm;
public Adapter adapter;
ModelPost postInfo;
private String postId;
public static final String Key_Post = "ID";
...
id = getIntent().getStringExtra("ID");
postTitle.setText(getIntent().getStringExtra("Title"));
postExpert.setText(getIntent().getStringExtra("Expert"));
image = getIntent().getStringExtra("Image");

postId = getIntent().getStringExtra("ID");

realm = Realm.getDefaultInstance();
RealmResults<ModelPost> result = realm.where(ModelPost.class).equalTo(Key_Post, postId).findAll();
if (result.size() != 0) {
bookmark.setImageResource(R.drawable.ic_bookmark_black_24dp);
} else {
bookmark.setImageResource(R.drawable.ic_bookmark_border_black_24dp);
}
Bookmark();
}

private void Bookmark() {

bookmark.setOnClickListener(v -> realm.executeTransaction(realm -> {
RealmResults<ModelPost> results = realm.where(ModelPost.class).equalTo(Key_Post, id).findAll();
if (results.size() == 0) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
}
realm.copyToRealm(postInfo);
bookmark.setImageResource(R.drawable.ic_bookmark_black_24dp);
Toast.makeText(getApplicationContext(), "Added", Toast.LENGTH_SHORT).show();
} else {
results.get(0).deleteFromRealm();
bookmark.setImageResource(R.drawable.ic_bookmark_border_black_24dp);
Toast.makeText(getApplicationContext(), "Removed", Toast.LENGTH_SHORT).show();

}
}));
}

型号:

Model Class

配置:

public class G extends Application
{
@Override
public void onCreate()
{
super.onCreate();
Realm.init(getApplicationContext());
RealmConfiguration configuration = new RealmConfiguration.Builder()
.name(Realm.DEFAULT_REALM_NAME)
.schemaVersion(0)
.deleteRealmIfMigrationNeeded()
.build();
Realm.setDefaultConfiguration(configuration);
}
}

错误:

java.lang.IllegalArgumentException: Invalid query: field 'ID' in class 'ModelPost' is of invalid type 'INTEGER'.

最佳答案

您正在从 Activity Intent 附加中检索所需的 ID(字符串形式)。您的模型类型使用整数作为 ID 字段。这就是类型不匹配并且您收到错误的原因。

顺便说一下,您正在创建两个似乎具有相同用途的变量(postIdId) - 您确定需要这两个变量吗?我会保留其中一个,但将其设为 int 字段。这个答案的其余部分假设您保留 id

首先,检查这是否也是您将值添加到 Intent 的方式(即您使用字符串参数而不是整数调用 intent.putExtra() )。如果是整数,那么可以使用上面的getIntExtra()代替getStringExtra(),直接赋值给id。如果确实是字符串,则需要转换为整数,如下所示。

String idAsString = getIntent().getStringExtra("ID");
id = Integer.valueOf(idAsString).intValue();

那么一切都应该很好。

关于java - Realm 无效类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59276396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com