Задать вопрос
@Chesterfield25

Как сохранить значение из базы данных firebase перед выходом?

У меня есть несколько фрагментов которые получают одну и ту же информацию из бд а именно баланс пользователя, но когда я закрываю приложение текущий баланс не сохраняется в приложение, как мне сохранить текущий баланс, а обновлять только в том случае если баланс изменился в самой бд?

Фрагмент

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()));
                }
            }
  • Вопрос задан
  • 33 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы