我搜索过FindFirst返回null类似的问题,但没有人回答。因为我觉得我可能做错了什么,让我用更多的细节来解释我的问题。
我正在开发一个应用程序,要求用户首先登录,然后让用户使用该应用程序。
我的User
类如下:
public class User extends RealmObject {
@PrimaryKey
@SerializedName("uid")
String id;
@SerializedName("ufname")
String firstName;
@SerializedName("ulname")
String lastName;
String avatar;
int sessions;
int invites;
String nextSessionTime;
String nextSessionTitle;
@SerializedName("lastlogin")
String lastLogin;
String token;
@Override
public String toString() {
return new GsonBuilder().create().toJson(this, User.class);
}
// other setters and getters
}
成功登录后,我会将用户对象存储在 Realm 数据库中的 SigninActivity
类中:
@Override
public void onSignInResponse(final GeneralResponse response) {
if (response == null) {
Timber.e("response is null");
return;
}
Timber.d(response.toString());
if (response.isSuccess()) {
// Store user's info including Token
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealmOrUpdate(response.getUser());
}
});
// Goto main screen
MainVideoActivity.startActivity(this);
this.finish();
} else {
String errorMessage = response.getErrorMessages();
super.displayMessage(errorMessage);
}
}
一旦登录成功,应用程序将用户重定向到MainVideoActivity
。我想通过以下代码在realm中查找用户,但是我得到了null
。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_video);
// Create the Realm instance
realm = Realm.getDefaultInstance();
User user = realm.where(User.class).findFirst();
// RealmResults<User> user = realm.where(User.class).findAll();
Timber.d(user.toString());
}
user
在两种方法中都是 null
。
null
用户。
我正在使用 classpath "io.realm:realm-gradle-plugin:2.0.2"
session=0, invites=0
与Realm浏览器中的值相匹配。我认为在第47行用户不是null? - beeenderid
、firstName
和lastName
都是null
,而在 Dev 工具截图中它们不是。 - HesamtoString()
方法会告诉你它是什么。 - EpicPandaForce