We want to send an object DetailRestaurant to our Database and we have an java.lang.reflect.InvocationTargetException
public class DataActivity extends AppCompatActivity {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef;
private EditText nameUser;
private Spinner rolUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data);
myRef = database.getReference("").child("users");
nameUser = (EditText) findViewById(R.id.nameUser);
rolUser = (Spinner) findViewById(R.id.rolUser);
final String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
Button map = (Button) findViewById(R.id.buttonUser);
map.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
writeNewUser(nameUser.getText().toString(),rolUser.getSelectedItem().toString());
Log.wtf("jelp", nameUser.getText().toString());
Log.wtf("jelp2", userId);
writeNewRestaurant(nameUser.getText().toString(), userId);
if (rolUser.getSelectedItem().toString().equals("Restaurant")){
Intent Restaurant = new Intent(DataActivity.this, MainRestaurantActivity.class);
startActivity(Restaurant);
finish();
}
else{
Intent Client= new Intent(DataActivity.this, MainClientActivity.class);
startActivity(Client);
finish();
}
}
});
}
private void writeNewUser(String name, String rol) {
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DetailUser user = new DetailUser(name, rol);
myRef = database.getReference("");
myRef.child("users").child("data").child(userId).setValue(user);
}
private void writeNewRestaurant(String name, String uid){
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DetailRestaurant user = new DetailRestaurant(name, uid);
myRef = database.getReference("");
myRef.child("users").child("restaurant").child(userId).setValue(user);
}
}
public class DetailRestaurant implements Serializable {
private String name;
private String uid;
private String ImageRestaurant;
private HashMap<String, DetailPlate> plates;
public DetailRestaurant(){
}
public DetailRestaurant(String ImageRestaurant){
this.ImageRestaurant = ImageRestaurant;
}
public DetailRestaurant(String name, String uid) {
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() {
return new ArrayList<>(this.plates.values());
}
@Override
public String toString() {
return this.getName();
}
}
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.fernandalopezcardenas.uneatfinal, PID: 23911 java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at com.google.android.gms.internal.zzbtg$zza.zzaH(Unknown Source) at com.google.android.gms.internal.zzbtg.zzaz(Unknown Source) at com.google.android.gms.internal.zzbtg.zzay(Unknown Source) at com.google.firebase.database.DatabaseReference.zza(Unknown Source) at com.google.firebase.database.DatabaseReference.setValue(Unknown Source) at com.example.fernandalopezcardenas.uneatfinal.Signup.DataActivity.writeNewRestaurant(DataActivity.java:71) at com.example.fernandalopezcardenas.uneatfinal.Signup.DataActivity.access$300(DataActivity.java:21) at com.example.fernandalopezcardenas.uneatfinal.Signup.DataActivity$1.onClick(DataActivity.java:47) at android.view.View.performClick(View.java:5640) at android.view.View$PerformClick.run(View.java:22455) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6165) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at com.google.android.gms.internal.zzbtg$zza.zzaH(Unknown Source) at com.google.android.gms.internal.zzbtg.zzaz(Unknown Source) at com.google.android.gms.internal.zzbtg.zzay(Unknown Source) at com.google.firebase.database.DatabaseReference.zza(Unknown Source) at com.google.firebase.database.DatabaseReference.setValue(Unknown Source) at com.example.fernandalopezcardenas.uneatfinal.Signup.DataActivity.writeNewRestaurant(DataActivity.java:71) at com.example.fernandalopezcardenas.uneatfinal.Signup.DataActivity.access$300(DataActivity.java:21) at com.example.fernandalopezcardenas.uneatfinal.Signup.DataActivity$1.onClick(DataActivity.java:47) at android.view.View.performClick(View.java:5640) at android.view.View$PerformClick.run(View.java:22455) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6165) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.Collection java.util.HashMap.values()' on a null object reference at com.example.fernandalopezcardenas.uneatfinal.Detail.DetailRestaurant.getPlatesList(DetailRestaurant.java:60)