私はレルムを使用してEditTextのユーザー入力をフラグメント1に保存し、その入力をフラグメント2のTextViewに表示します。ユーザーが最初のフラグメント内のボタンをクリックすると、内側の第2の断片。レルムは古いオブジェクトを使用していて、更新していません
すべてはうまく見えますが、私がアプリケーションを昼食するたびに、オブジェクトを保存する前にクエリが実行され、古い入力がTextView内に表示されます。
- 私はいくつかの入力を入力すると、古いテキストが既に保存され、ここでのTextView
内 を示してきたが、フラグメント1内部入力を保存するための方法、およびクリック時の方法です:
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();
}
。
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();
}
Modelクラス:それは起動時に
public class Email extends RealmObject {
@PrimaryKey
public int id = 0;
private String username;
//Getters and setters here
}
フラグメントはどのように設定されていますか?それらはViewPager、Activityなどに含まれていますか?彼らは同時に作られていますか?私にはそれらがあり、Fragment1のボタンがクリックされる前にFragment2の 'getEmail()'を実行します。 –
@RafałZawadzki彼らはViewPagerにあり、私はそれらをpagerAdapter.Withの中のリストとしてプログラムで追加しました。getEmail()の前にボタンのクリックを実行するにはどうすればいいですか? –
フラグメントはTabFragment(ViewPager)内にあり、それらは同時に作成されます。仲間を助けるための@RafałZawadzkithx –