Android-Firebase数据库异常
我从firebase“com.google.firebase.database.DatabaseException:无法将java.lang.Long类型的对象转换为类型”我在单击片段1上的按钮并切换到应用程序中的另一个片段(另一个选项卡)时出错。我不明白为什么。下面的代码显示了这两个片段 片段1:Android-Firebase数据库异常,android,firebase,Android,Firebase,我从firebase“com.google.firebase.database.DatabaseException:无法将java.lang.Long类型的对象转换为类型”我在单击片段1上的按钮并切换到应用程序中的另一个片段(另一个选项卡)时出错。我不明白为什么。下面的代码显示了这两个片段 片段1: depositButton.setOnClickListener(new View.OnClickListener() { @Override public voi
depositButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
depositInteger = 0;
try {
depositInteger =
Integer.parseInt(depositText.getText().toString().trim());
} catch (NumberFormatException e) {
if (depositText.equals("")) {
Toast.makeText(getActivity(), "Failed",
Toast.LENGTH_SHORT).show();
}
}
DatabaseReference rootRef =
FirebaseDatabase.getInstance().getReference();
final DatabaseReference userRef =
rootRef.child("Users").child(user.getDisplayName());
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!dataSnapshot.hasChild("deposit")){
userRef.child("deposit").setValue(0);
} else {
previousDeposit =
dataSnapshot.child("deposit").getValue(Integer.class);
finalDeposit = previousDeposit + depositInteger;
userRef.child("deposit").setValue(finalDeposit);
deposit.setText(String.valueOf(finalDeposit));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
userRef.addListenerForSingleValueEvent(eventListener);
}
});
片段2:
database.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int oddsText = 0;
int betAmount = 0;
try {
oddsText =
Integer.parseInt(mOddsText.getText().toString().trim());
betAmount =
Integer.parseInt(mBetAmount.getText().toString().trim());
} catch (NumberFormatException e) {
if (mOddsText.equals("")) {
Toast.makeText(getActivity(), "Failed",
Toast.LENGTH_SHORT).show();
} else if (mBetAmount.equals("")) {
Toast.makeText(getActivity(), "Failed",
Toast.LENGTH_SHORT).show();
}
}
if (oddsText > 0 & betAmount > 0) {
String id = database.push().getKey();
database.child(user.getDisplayName()).child(id).child("odds").setValue(oddsText);
database.child(user.getDisplayName()).child(id).child("betAmount").setValue(betAmount);
database.child(user.getDisplayName()).child(id).child("date").setValue(mDate);
database.child(user.getDisplayName()).child(id).child("result").setValue(result);
Toast.makeText(getActivity(), "Done", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Failed", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
您正在从数据库中检索一个以long格式返回的数字,并且直接将其转换为int会导致错误 试试这个
int number= (int) (long) dataSnapshot.getvalue()
问题就在这里
previousDeposit = `dataSnapshot.child("deposit").getValue(Integer.class);`
将其转换为
previousDeposit =(int) (long) dataSnapshot.child("deposit").getValue();
但是你的代码显示你正在将一个
Long
值转换为Integer。class
我刚刚尝试了你的建议,它给出了相同的错误。你能告诉我错误显示在给定代码中的哪一行吗?可能重复