У меня есть приложение, в котором я сохраняю имя и фамилию пользователя в общих настройках после входа в систему. Оно показывает мне сообщение Toast, которое я установил, чтобы отображать имя и фамилию вошедшего в систему пользователя.
Что странно, это, вероятно, не перезаписывает данные в этих настройках, потому что приложение показывает все ранее вошедшие в систему пользователи, и, что более странно, оно показывает Toast во время другого действия Activity (не там, где установлен Toast), например когда я изменяю некоторые базы данных Firebase вручную.
Я задаюсь вопросом об этом userGuestID ... Android Studio выдала мне ошибку и сказала, что я должен сделать это окончательным, потому что переменная userGuestID доступна из внутреннего класса и должна быть объявлена как final. Это вызывает проблемы?
Ключи
private static final String SHARED_PREFS = "sharedPrefs";
private static final String USER_FIREBASE_URL = "userFirebaseURL";
private static final String USER_GUEST_ID = "userGuestID";
Активность, в которой я сохраняю данные пользователя.
public void saveUserData(){
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS,0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(USER_FIREBASE_URL,"here I provide the URL to Firebase Database node");
editor.putInt(USER_GUEST_ID,guestNumber);
editor.apply();
}
Так я загружаю данные
public void loadData(){
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS,0);
String userDataFirebaseURL = sharedPreferences.getString(USER_FIREBASE_URL,"");
final int userGuestID = sharedPreferences.getInt(USER_GUEST_ID,0);
try{
databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl(userDataFirebaseURL);
}catch (Exception e) {
}
Здесь я создаю сообщение Toast.
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Guest user;
try {
user = dataSnapshot.child("Guest" + userGuestID).getValue(Guest.class);
Toast.makeText(getApplicationContext(), user.getName() + " " + user.getSurname(), Toast.LENGTH_SHORT).show();
} catch (NullPointerException e) {
}