我正在尝试获取存储在firebase子级中的整数值。当我得到它给解析字符串值给Integer的错误。但是当我解析该值时,它将引发此错误: java.lang.NumberFormatException:对于输入字符串:“结果”
代码如下:
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数据库数据: enter image description here
答案 0 :(得分:0)
尝试使用此代码读取数据,并在获取数据时先使用class更改插入数据,然后像下面的代码那样将数据获取到该类中。
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());
}
});
}
答案 1 :(得分:0)
尝试通过这种方式从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();
}
答案 2 :(得分:0)
尝试一下。
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) {
}
});