Firebase Android считывает данные -> обработка -> обновляет данные "Проблема глобальной переменной" - PullRequest
0 голосов
/ 08 января 2019

Я должен взять данные из Firebase и удалить удалить некоторое значение, а затем сохранить данные в Fb. Вот моя функция чтения в моей деятельности:

 private void readData() {
    mAuth = FirebaseAuth.getInstance();
    DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference().child("users");
    DatabaseReference currentUserDB = mDatabase.child(mAuth.getCurrentUser().getUid());
    currentUserDB.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            Map<String,Object> map = (Map)dataSnapshot.getValue();
             kwotaKonta= ((String)map.get("account"));

когда я делаю все в "onDataChange", его удаляют снова и снова, так я попытался создать глобальную переменную с именем "kwotaKonta" и сделать ее onCreate, но когда функция закончена, "kwotaKonta" является нулевым. Пожалуйста, помогите, как я могу получить значение от onDataChange.

Thx!

1 Ответ

0 голосов
/ 08 января 2019

его удаляют снова и снова

Это происходит потому, что вы используете addValueEventListener вместо addListenerForSingleValueEvent. ValueEventListener срабатывает каждый раз, когда что-то меняется в вашей базе данных. Поэтому, если вы удалите что-то из базы данных, ваш метод onDataChange() снова будет запущен.

Чтобы решить эту проблему, измените:

currentUserDB.addValueEventListener(/* ... */);

до

currentUserDB.addListenerForSingleValueEvent(/* ... */);

Из официальной документации pelase см .:

addListenerForSingleValueEvent (слушатель ValueEventListener) - добавляет прослушиватель для одного изменения данных в этом месте.

и

addValueEventListener (слушатель ValueEventListener) - добавьте прослушиватель для изменений данных в этом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...