【发布时间】:2018-05-09 02:09:17
【问题描述】:
错误我想再次发送对象并且我的代码想将其转换为String,请帮助,错误是:
com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为 DetailRestaurant 类型
public class UploadImage extends AppCompatActivity {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef;
private EditText nameImageR;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_upload_image);
myRef = database.getReference("").child("users");
nameImageR = findViewById(R.id.nameImageR);
Button map = findViewById(R.id.buttonUpload);
map.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
writeNewImage();
Intent Client= new Intent(UploadImage.this, MainRestaurantActivity.class);
startActivity(Client);
finish();
}
});
}
private void writeNewImage() {
myRef = database.getReference("users").child("restaurant").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
ValueEventListener valueEventListener = myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot areaSnapshot : dataSnapshot.getChildren()) {
DetailRestaurant value1 = areaSnapshot.getValue(DetailRestaurant.class);
value1.setImageRestaurant(nameImageR.getText().toString());
if (value1.getUid().equals(FirebaseAuth.getInstance().getCurrentUser().getUid())) {
String userIDR = value1.getUid();
myRef = database.getReference("");
myRef.child("users").child("restaurant").child(userIDR).setValue(value1);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("Eror", "Something happened");
}
});
}
}
public class DetailRestaurant implements Serializable {
private String name;
private String uid;
private String ImageRestaurant;
private HashMap<String, DetailPlate> plates;
public DetailRestaurant(){
this.plates = new HashMap<String, DetailPlate>();
}
public DetailRestaurant(String ImageRestaurant){
this();
this.ImageRestaurant = ImageRestaurant;
}
public DetailRestaurant(String name, String uid) {
this();
this.name = name;
this.uid = uid;
}
public DetailRestaurant(String name, String uid, String ImageRestaurant, HashMap<String, DetailPlate> plates) {
this.name = name;
this.uid=uid;
this.ImageRestaurant = ImageRestaurant;
this.plates = plates;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getImageRestaurant() {
return ImageRestaurant;
}
public void setImageRestaurant(String imageRestaurant) {
ImageRestaurant = imageRestaurant;
}
public void setPlates(HashMap<String, DetailPlate> plates) {
this.plates = plates;
}
public HashMap<String, DetailPlate> getPlates(){ return plates; }
public ArrayList<DetailPlate> getPlatesList() {
ArrayList<DetailPlate> plates = new ArrayList<DetailPlate>();
for (DetailPlate p : this.plates.values()){
plates.add(p);
}
return plates;
}
@Override
public String toString() {
return this.getName();
}
}
E/AndroidRuntime: 致命异常: main 进程:com.example.fernandalopezcardenas.uneatfinal,PID:9713 com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为 com.example.fernandalopezcardenas.uneatfinal.Detail.DetailRestaurant 类型 在 com.google.android.gms.internal.zzbtg.zze(未知来源) 在 com.google.android.gms.internal.zzbtg.zzb(未知来源) 在 com.google.android.gms.internal.zzbtg.zza(未知来源) 在 com.google.firebase.database.DataSnapshot.getValue(未知来源) 在 com.example.fernandalopezcardenas.uneatfinal.Restaurant.UploadImage$2.onDataChange(UploadImage.java:56) 在 com.google.android.gms.internal.zzbpx.zza(未知来源) 在 com.google.android.gms.internal.zzbqx.zzZT(未知来源) 在 com.google.android.gms.internal.zzbra$1.run(未知来源) 在 android.os.Handler.handleCallback(Handler.java:746) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5459) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
【问题讨论】:
-
显示发生错误的行必须在android studio中提及并说出哪一行?
-
DetailRestaurant value1 = areaSnapshot.getValue(DetailRestaurant.class);在UploadImage类的56中
-
请添加您的数据库结构。
标签: java android firebase firebase-realtime-database