无法将 java.lang.Double 类型的值转换为字符串



我已经尝试了许多解决方案,这段代码在早上对我有用,现在当我运行它时,它再次显示未知错误,这是我的用户类 我什至尝试将其转换为doubl也不起作用,任何人请帮助我。

public class createuser {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getIssharing() {
return issharing;
}
public void setIssharing(String issharing) {
this.issharing = issharing;
}
public String getLat() {
return lat;
}
public void setLat(String lat) {
this.lat = lat;
}
public String getLng() {
return lng;
}
public void setLng(String lng) {
this.lng = lng;
}
public String getImgurl() {
return imgurl;
}
public void setImgurl(String imgurl) {
this.imgurl = imgurl;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public createuser() {
}
public String name, email, password, code, issharing, lat, lng, 
imgurl, userid;
public createuser(String name, String email, String password, String 
code, String issharing, String lat, String lng, String imgurl, String 
userid) {
this.name = name;
this.email = email;
this.password = password;
this.code = code;
this.issharing = issharing;
this.lat = lat;
this.lng = lng;
this.imgurl = imgurl;
this.userid = userid;
}
}

这是我的运行时类

code = (EditText)findViewById(R.id.editText);
submit = (Button)findViewById(R.id.button);
firebaseDatabase = FirebaseDatabase.getInstance();
auth = FirebaseAuth.getInstance();
user = auth.getCurrentUser();
reference = 
firebaseDatabase.getInstance().getReference().child("users");
currentreference = 
firebaseDatabase.getInstance().getReference().child("users")
.child(user.getUid());

current_user_id = user.getUid();
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
query = 
reference.orderByChild("code").equalTo(code.getText().toString());
query.addListenerForSingleValueEvent
(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot 
dataSnapshot) {
if (dataSnapshot.exists())
{

createuser createuser = null;
for (DataSnapshot childDss : 
dataSnapshot.getChildren())
{
createuser = 
childDss.getValue(createuser.class);
join_user_id = createuser.userid;
circlereference = 
firebaseDatabase.getInstance().getReference().child("users")
.child(join_user_id).child("Circlemembers");
circlejoin circlejoin = new 
circlejoin(current_user_id);
circlejoin circlejoin1 = new 
circlejoin(join_user_id);

circlereference.child(user.getUid()).setValue(circlejoin)
.addOnCompleteListener(new 
OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull 
Task<Void> task) {
if (task.isSuccessful())
{
Toast.makeText(getApplicationContext(),"user joined 
circle",Toast.LENGTH_SHORT).show();
startActivity(new 
Intent(joincircle.this,userlocation.class));
}
}
});

}
}
else
{
Toast.makeText(getApplicationContext(),"circle 
code is invalid",Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError 
databaseError) {
}
});
}
});
} 

实时数据库是这样的

users
NwKzgM0NhuY7gT7eFiN9nwzumMG2
code: "7260232"
email: "trackit385@gmail.com"
imgurl: "na"
issharing: "false"
lat: 17.3932339
lng: 78.4440638
name: "tejesh"
password: "kinglion"
userid: "NwKzgM0NhuY7gT7eFiN9nwzumMG2"

任何人请帮助我,我无法解决它,我的错误是

com.google.firebase.database.DatabaseException: Failed to convert 
value of type java.lang.Double to String

您会收到以下错误:

com.google.firebase.database.DatabaseException: 无法转换 类型为 java.lang.Double 的值为字符串

因为createuser类中的latlng字段属于String类型,而在数据库中,两个文件都保存一个double值,这是不正确的。要解决此问题,只需将类中的字段类型更改为double

公共类创建用户 {

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getIssharing() {
return issharing;
}
public void setIssharing(String issharing) {
this.issharing = issharing;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
public double getLng() {
return lng;
}
public void setLng(double lng) {
this.lng = lng;
}
public String getImgurl() {
return imgurl;
}
public void setImgurl(String imgurl) {
this.imgurl = imgurl;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public createuser() {
}
public String name, email, password, code, issharing,
imgurl, userid;
public double lat, lng;
public createuser(String name, String email, String password, String
code, String issharing, double lat, double lng, String imgurl, String
userid) {
this.name = name;
this.email = email;
this.password = password;
this.code = code;
this.issharing = issharing;
this.lat = lat;
this.lng = lng;
this.imgurl = imgurl;
this.userid = userid;
}
}

我不知道,但这个类缺少所有的字段声明。那应该是Double lat, Double lng.当字段String并且 setter 方法设置为double时,这不起作用,至少除非添加匹配的 setter。此外,Doubledouble不是相同的数据类型。您将原语与复杂数据类型混淆(在这里它们也有两种不同深浅的蓝色(并且还定义了 setter,但不在构造函数中使用它们......其中第二个可能是品味问题,但第一个在语法上是错误的,因为它意味着:按值调用与按引用调用。该类可能应该简单地称为User,因为您最终可能会在整个应用程序中使用它。

public class User {
private Double lat;
private Double lng;
...
public User() {}
public User(String name, String email, String password, String code, String issharing, Double lat, Double lng, String imgurl, String userid) {
...
}
...
public Double getLat() { return this.lat; }
public Double getLng() { return this.lng; }
public void setLat(Double value) { this.lat = value; }
public void setLng(Double value) { this.lng = value; } 
}

最新更新