У меня есть несколько фрагментов которые получают одну и ту же информацию из бд а именно баланс пользователя, но когда я закрываю приложение текущий баланс не сохраняется в приложение, как мне сохранить текущий баланс, а обновлять только в том случае если баланс изменился в самой бд?
Фрагмент
public class HomeFragment extends Fragment {
public HomeFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
FragmentHomeBinding binding;
//Firebase
private FirebaseAuth mAuth;
private FirebaseDatabase userDatabase;
private FirebaseAuth.AuthStateListener listener;
private FirebaseUser user;
private DatabaseReference reference;
private String firebaseId;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentHomeBinding.inflate(inflater, container, false);
userDatabase = FirebaseDatabase.getInstance();
reference = userDatabase.getReference();
mAuth = FirebaseAuth.getInstance();
user = mAuth.getCurrentUser();
firebaseId = user.getUid();
stateListener();
gettingDatabase();
// Inflate the layout for this fragment
return binding.getRoot();
}
private void stateListener(){
listener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if(user == null){
Toast.makeText(getActivity(), "You Need To Login!", Toast.LENGTH_SHORT).show();
getActivity().finish();
}
}
};
}
private void gettingDatabase(){
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()){
User user = new User();
user.setPv(dataSnapshot.child(firebaseId).getValue(User.class).getPv());
binding.pv.setText(Integer.toString((int) user.getPv()));
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getActivity(), "Error" + error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(listener);
}
@Override
public void onStop() {
super.onStop();
if(listener != null) {
mAuth.removeAuthStateListener(listener);
}
}
}
Участок кода который отвечает непосредственно за показ баланса
private void gettingDatabase(){
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()){
User user = new User();
user.setPv(dataSnapshot.child(firebaseId).getValue(User.class).getPv());
binding.pv.setText(Integer.toString((int) user.getPv()));
}
}