[英]Realm is using old object, not updating it
我正在使用Realm從Fragment 1中的EditText保存用戶輸入,並在Fragment 2的TextView中顯示該輸入。當用戶單擊第一個Fragment中的按鈕時,我需要在第二個Fragment中顯示該文本。
一切似乎都很好,但是每當我午餐我的應用程序時,在保存對象之前都會取消查詢,並且舊輸入會顯示在TextView中。
這是保存輸入的方法,以及片段1內的OnClick方法:
public void setEmail() {
Realm realm = getRealm();
realm.beginTransaction();
final Email emailInput = new Email();
emailInput.setUsername(editEmail.getText().toString());
realm.copyToRealmOrUpdate(emailInput);
realm.commitTransaction();
}
@OnClick(R.id.btn_forgot)
public void onButtonClick() {
setEmail();
}
。 這是在片段2中查詢和設置文本的方法:
public void getEmail() {
Realm realm = getRealm();
RealmQuery<Email> queryUser = realm.where(Email.class);
Email resultEmail = queryUser.findFirst();
resendEmailTxt = (AutoResizeTextView) getView().findViewById(R.id.resend_user_email);
if (resendEmailTxt != null) {
this.resendEmailTxt.setText(resultEmail.getUsername());
}
}
@Override
public void onStart() {
super.onStart();
getEmail();
}
型號類別:
public class Email extends RealmObject {
@PrimaryKey
public int id = 0;
private String username;
//Getters and setters here
}
第二個片段開始查詢數據時,即在第一個片段的onClick事件發生之前(因為兩個片段大致同時創建)。
您需要告知第二個片段第一個片段中的數據已更改。 有很多方法可以實現這一目標,例如:
可能還有很多,但是其中之一就足夠了;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.