我在 Firebase 数据库中有值,我只想将其作为 int 变量。
我想在项目的变量中包含coinsAmount。
我正在寻找很多信息,但无法理解,因为大部分信息都是英文,而且我不完全理解谷歌翻译的翻译,请告诉我该怎么做,或者扔掉它写在哪里
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 coinAmount = dataSnapshot.child("coinsAmount").getValue(Long.class);
说:
Incompatible types. Required int but 'getValue' was inferred to T: Incompatible types: Long is not convertible to int
uidRef.addListenerForSingleValueEvent(valueEventListener);
说:
Cannot resolve symbol 'addListenerForSingleValueEvent
正在 Activity 中初始化
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());
最佳答案
要获取 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
关于java - 如何使用firebase数据库中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55817592/