如何在更改"活动"时保存意向数据



在我的第一个活动中,我将把数据库从firebase传递到第二个活动中。

private void isUser() {

final String userEnteredUsername = username.getEditText().getText().toString().trim();
final String userEnteredPassword = password.getEditText().getText().toString().trim();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("users");
Query checkUser = reference.orderByChild("username").equalTo(userEnteredUsername);
checkUser.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
username.setError(null);
username.setErrorEnabled(false);
String passwordFromDB = dataSnapshot.child(userEnteredUsername).child("password").getValue(String.class);
if(passwordFromDB.equals(userEnteredPassword)){
Intent intent = new Intent(getApplicationContext(),ProfilePage.class);
String nameFromDB = dataSnapshot.child(userEnteredUsername).child("name").getValue(String.class);
String usernameFromDB = dataSnapshot.child(userEnteredUsername).child("username").getValue(String.class);
String phoneNoFromDB = dataSnapshot.child(userEnteredUsername).child("phoneNo").getValue(String.class);
String emailFromDB = dataSnapshot.child(userEnteredUsername).child("email").getValue(String.class);
intent.putExtra("name", nameFromDB);
intent.putExtra("username", usernameFromDB);
intent.putExtra("email", emailFromDB);
intent.putExtra("phoneNo", phoneNoFromDB);
intent.putExtra("password", passwordFromDB);
startActivity(intent);

} else {
password.setError("Wrong Password");
password.requestFocus();
}
} else {
username.setError("No such User exist");
username.requestFocus();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}

如何保存我的意向数据?当我从第二个活动更改活动时,数据将消失。我如何制作它,以便数据将保存在我的活动中。我尝试了多种方法。共享偏好,再次从firebase中检索数据,并添加super.onSaveInstanceState(savedInstanceState(编码,但似乎不起作用。

private void showAllUserData() {
Intent intent = getIntent();
_USERNAME = intent.getStringExtra("username");
_NAME = intent.getStringExtra("name");
_EMAIL = intent.getStringExtra("email");
_PHONENO = intent.getStringExtra("phoneNo");
_PASSWORD = intent.getStringExtra("password");
fullNameLabel.setText(_NAME);
usernameLabel.setText(_USERNAME);
fullName.getEditText().setText(_NAME);
email.getEditText().setText(_EMAIL);
phoneNo.getEditText().setText(_PHONENO);
password.getEditText().setText(_PASSWORD);

}

您确定您的数据快照包含您期望的字符串吗?也许您想要的字段在数据快照上为null或空白

onSaveInstanceState仅在活动被销毁时调用,您的活动可能会暂停。使用共享首选项,您应该能够共享这些数据。如果这仍然有效,请尝试在一个活动中将这些字段声明为公共静态字段,并以这种方式共享数据。

最新更新