Как использовать значения из базы данных Firebase? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть значения в базе данных Firebase, и я просто хочу, чтобы она была в виде переменной типа int.

enter image description here

Я хочу, чтобы в проекте была переменная coinsAmount.

Я искал много информации, но не мог понять, потому что большая часть информации на английском языке, и я не до конца понимаю переводчик Google, пожалуйста, скажите мне, как это сделать, или скажите, где это написано, пожалуйста

 ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        int coinsAmount = dataSnapshot.child("coinsAmount").getValue(Long.class);
        text.setText(coinsAmount);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
   uidRef.addListenerForSingleValueEvent(valueEventListener);

int coinsAmount = dataSnapshot.child("coinsAmount").getValue(Long.class); говорит:

Несовместимые типы.Обязательный int, но getValue был выведен в T: Несовместимые типы: Long не может быть преобразован в int

uidRef.addListenerForSingleValueEvent(valueEventListener);

говорит:

Невозможно разрешить символ 'addListenerForSingleValueEvent

https://i.stack.imgur.com/PpU7n.png

инициализация в действии

public class MenuActivity extends BaseActivity {
public TextView text;
private static final String TAG = "MenuActivity";
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(getUid());

1 Ответ

0 голосов
/ 24 апреля 2019

Чтобы получить значение вашего coinsAmount свойства, используйте следующие строки кода:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        long coinsAmount = dataSnapshot.child("coinsAmount").getValue(Long.class);
        Log.d(TAG, String.valueOf(coinsAmount));
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

Выходные данные в вашем logcat будут:

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