Android 无法从firebase子级检索整数值
我正在尝试获取存储在firebase child中的整数值。当我得到它时,会给出将字符串值解析为整数的错误。但当我解析该值时,它会抛出以下错误: java.lang.NumberFormatException:用于输入字符串:“结果” 代码如下:Android 无法从firebase子级检索整数值,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试获取存储在firebase child中的整数值。当我得到它时,会给出将字符串值解析为整数的错误。但当我解析该值时,它会抛出以下错误: java.lang.NumberFormatException:用于输入字符串:“结果” 代码如下: mref.child("data").child("device_token).child("res").child("results").addValueEventListener(new ValueEventListener() { @Overri
mref.child("data").child("device_token).child("res").child("results").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int val= Integer.parseInt(dataSnapshot.getValue());
Toast.makeText(RestaurantsActivity.this, val, Toast.LENGTH_SHORT).show();
}
如果我得到这样的值:
mref.child("data").child("device_token).child("res").child("results").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String val= dataSnapshot.getValue().toString();
int intVal= Integer.parseInt(val);
Toast.makeText(RestaurantsActivity.this, intVal, Toast.LENGTH_SHORT).show();
}
然后应用程序崩溃并引发异常:
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String java.lang.Object.toString()”
请帮助我检索整数中的值或将字符串值转换为整数。谢谢
以下是firebase数据库数据:
请尝试此代码读取数据,并在获取数据时使用类更改“第一次插入数据”,然后将数据获取到该类中,如下面的代码所示
private void sqlQuery() {
Query query =mFirebaseDatabase.child("usersDb").child("UserTable").orderByChild("email").equalTo("vikas@gmail.com");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot issue : dataSnapshot.getChildren()) {
Log.d("Value::", issue.getValue(User.class).email);
Toast.makeText(getApplicationContext(),"sdfsdf",Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
试试这个方法
/**
* User data change listener
*/
private void addUserChangeListener(String name) {
// User data change listener
// below code name add your database name
mFirebaseDatabase.child(name).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
// Check for null
if (user == null) {
Log.e(TAG, "User data is null!");
return;
}
Log.e(TAG, "User data is changed!" + user.name + ", " + user.email);
// Display newly updated name and email
mEtEmail.setText(user.email);
// clear edit text
mEtName.setText(user.name);
mEtPwd.setText(user.pwd);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.e(TAG, "Failed to read user", error.toException());
}
});
}
尝试以下方法从fierbase获取int值
mref.child("data").child("device_token").child("res").child("results").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int intVal = Integer.valueOf(String.valueOf(dataSnapshot.getValue()));
Toast.makeText(RestaurantsActivity.this, intVal, Toast.LENGTH_SHORT).show();
}
试试这个
mref.child("data").child("device_token").child("res").child("results").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int val = dataSnapshot.getValue(Integer.class);
Toast.makeText(RestaurantsActivity.this, val, Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
当您尝试
记录dataSnapshot.toString()
致命异常时,您会看到什么:主进程:com.assignment.saad.assignmentlocation,PID:20186 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String java.lang.Object.toString()”,检查它是否与.exists()一起存在; 是吗?签入日志消息?尝试使用if(dataSnapshot.exists()){}
将您的语句包装在onDataChange下您的意思是我必须使用SingleValueEventListener并添加dataSnapshot.exist()?不,您也可以使用addValueEventListener。我使用了dataSnapshot.exist()。现在应用程序没有崩溃,但值没有显示在toast中。toast没有出现。您可以根据您的db名称和表名称更改代码。我添加了另一个方法来尝试。您可以添加带问题的fierbase数据吗?我添加了check plzclean并重新创建您的项目或禁用instnt Runbeas,因为我正在使用相同的函数从我的fierbase获取计数。您是否获得整数的值?您是将该值存储在字符串还是整数中?