【发布时间】:2017-04-20 19:54:44
【问题描述】:
我正在尝试在旋转设备时保存 EditText 的值。 我正在使用 Firebase 数据库来保存和获取我的值。
@Override
protected void onStart() {
super.onStart();
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Post post = dataSnapshot.getValue(Post.class);
if (mPostKey != null) {
titleEditText.setText(post.getTitle());
notesEditText.setText(post.getNotes());
} else {
titleEditText.setText(prefs.getString("titleText", post.getTitle()));
notesEditText.setText(prefs.getString("notesText", post.getTitle()));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
mPostReference.addValueEventListener(postListener);
mPostListener = postListener;
}
仅当该值尚未存储在 Firebase 中时才有效。
@Override
protected void onResume() {
super.onResume();
prefs.edit().putString("titleText", titleEditText.getText().toString()).commit();
prefs.edit().putString("notesText", notesEditText.getText().toString()).commit();
}
我可以在清单中设置方向更改,但如果这样做,当我向活动添加照片时,我仍然会丢失文本。
我也尝试过像这样在 super.onResume() 之前和之后删除监听器:
@Override
public void onResume() {
super.onResume();
if (mPostListener != null) {
mPostReference.removeEventListener(mPostListener);
}
}
感谢任何帮助。
【问题讨论】:
-
你能给我举个例子吗,因为我也试过这样做,但没有成功。
标签: android firebase firebase-realtime-database activity-lifecycle