getFromRealm()を呼び出そうとしたときに、初めてデータを取得できないため、データを取得して再オープンする必要がありますアプリ。 私は間違った方法でそれをやっていますか?私はSqliteを使って試してみましたが、同じ問題があります。誰でも助けることができますか? 私の目標は、すぐにデータを取得し、その場で取得することです。 以下はそのコードです。Firebaseデータがすぐに取得できない
MainActivity:
public class MainActivity extends AppCompactActivity {
private static final String TAG = "MainActivity";
public String mName;
public String mEmail;
private Realm mRealm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRealm = Realm.getInstance(this);
mDatabase = FirebaseDatabase.getInstance().getReference();
mAuth = FirebaseAuth.getInstance();
saveToRealm();
getFromRealm();
Log.d(TAG, "Name: " + mName); // Here show null at first open the app
Log.d(TAG, "Email: " + mEmail); // Here show null at first open the app
}
}
これは、レルムメソッドにデータを保存している:
public void saveToRealm() {
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Users details = dataSnapshot.getValue(Users.class);
Log.d(TAG, String.valueOf(dataSnapshot));
String name = details.getName();
String email = details.getEmail();
details.setName(name);
details.setEmail(email);
mRealm.beginTransaction();
mRealm.copyToRealmOrUpdate(details);
mRealm.commitTransaction();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "getUser:onCancelled", databaseError.toException());
}
};
mDatabase.child("User")
.child("Details")
.addValueEventListener(postListener);
}
これは、getデータ方式である:
public void getFromRealm() {
RealmResults<Users> results =
mRealm.where(Users.class).findAll();
try{
Users c = results.get(0);
mName = c.getName();
mEmail = c.getEmail();
} catch (Exception e) {
Log.e(TAG, String.valueOf(e));
}
}
これは、オブジェクトのクラスである:
public class Users extends RealmObject {
@PrimaryKey
private long id;
private String name;
private String email;
public Users() {
}
public void setId(long id) {
this.id = id;
}
public long getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
}
このレルムのバージョンは何ですか? 'Realm.getInstance(Context)'は古くから 'RealmConfiguration.Builder()'のために削除されました。 – EpicPandaForce
お返事ありがとうございます。私はsqliteを使用して同じ問題があるので。バージョン管理が私の予想される結果に影響を及ぼしますか?私は領域でかなり新しいです。 – user3606920
まあ0.89.0には重大な変更がありましたが、0.89.0に行くと1.1.1(または1.2.0)になる可能性があります。 – EpicPandaForce