Android Studio Firebase
Publicado por Gerson (1 intervención) el 10/09/2020 21:30:24
Buenas tardes, agradezco su colaboración con el siguiente problema, estudio programación y estoy trabajando en un proyecto personal, pero tengo dificulta al grabar en firebase desde android studio, utilizo la version 4.0.1, con api28.
Tengo un formulario dentro de la carpeta java, ui, de tipo fragment, ahí capturo varios campos, pero al momento de grabar en firebase, no logro crear el nodo de la forma correcta.
parte de los atributos en el fragment son los siguientes:
En el método public View onCreateView tengo lo siguiente:
//éste valor es por que quiero generar un id único de cada registro, pero creo que no funciona bien, pq me sobre escribe los registros.
Éste el método para grabar en firebase, está algo desastrozo, pq he intentado varias formas, buscando en internet, pero no logro hacerlo correr bien:
De la forma que he visto, se realiza con éste código: // mascotasRef.child("reg_" + mascotas.getId()).setValue(mascotas); pero a mi me da problemas, siempre se cae en ésta línea y si la comento si pasa. Entonces tuve que crear otros pasos para agregar los datos, uno a uno, lo idóneo es que se agregue el objeto y no cada elemento de la clase por separado.
Esta es la clase que utilizo:
Agradezco de antemano la colaboración, Adjunto unas imágenes de como salen y de como deberían salir, Gracias.
Tengo un formulario dentro de la carpeta java, ui, de tipo fragment, ahí capturo varios campos, pero al momento de grabar en firebase, no logro crear el nodo de la forma correcta.
parte de los atributos en el fragment son los siguientes:
1
2
3
4
StorageReference mStorageRef;
private ImageView imagen;
private Button btAceptar;
private DatabaseReference mDatabase;
En el método public View onCreateView tengo lo siguiente:
1
2
3
4
mDatabase = FirebaseDatabase.getInstance().getReference();
FirebaseAuth mAuth;
mAuth = FirebaseAuth.getInstance();
etid = UUID.randomUUID().toString();
1
2
3
4
5
6
7
btAceptar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
registrarMascota();
}
});
Éste el método para grabar en firebase, está algo desastrozo, pq he intentado varias formas, buscando en internet, pero no logro hacerlo correr bien:
De la forma que he visto, se realiza con éste código: // mascotasRef.child("reg_" + mascotas.getId()).setValue(mascotas); pero a mi me da problemas, siempre se cae en ésta línea y si la comento si pasa. Entonces tuve que crear otros pasos para agregar los datos, uno a uno, lo idóneo es que se agregue el objeto y no cada elemento de la clase por separado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
private void registrarMascota() {
String etNombre1 = etNombre.getText().toString();
String etTipo1 = etTipo.getText().toString();
String etRaza1 = etRaza.getText().toString();
String etFechaNac1 = etFechaNac.getText().toString();
String archivo = etNombre.getText().toString(); //el nombre del archivo como se pondrá en Firebase
if (!archivo.isEmpty()) {
//Aca se registra un objeto articulo...
mascotas = new Mascotas(etid, etuId, etNombre1, etTipo1, etRaza1, etFechaNac1, imagen);
// mascotasRef.child("reg_" + mascotas.getId()).setValue(mascotas);
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference(etid.toString());
myRef.child(mascotas.getId()).setValue("id: "+mascotas.getId());
myRef.child(mascotas.getUId()).setValue(mascotas.getUId());
myRef.child(mascotas.getNombre()).setValue("Nombre: "+mascotas.getNombre());
myRef.child(mascotas.getTipo()).setValue(mascotas.getTipo());
myRef.child(mascotas.getRaza()).setValue(mascotas.getRaza());
myRef.child(mascotas.getfechaNac()).setValue(mascotas.getfechaNac());
// myRef.child(mascotas.getNombre()).setValue("Hello, World!"+mascotas);
mStorageRef = FirebaseStorage.getInstance().getReference().child("mascota/" + etid);
mStorageRef.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri rutaUri = taskSnapshot.getUploadSessionUri();
Toast.makeText(getContext(), rutaUri.getPath(), Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getContext(), "Error subiendo archivo", Toast.LENGTH_SHORT).show();
}
});
} else {
Toast.makeText(getContext(), "Escriba un nombre de archivo", Toast.LENGTH_SHORT).show();
}
}
private Uri uri;
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uri = data.getData();
imagen.setImageURI(uri);
}
Esta es la clase que utilizo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public class Mascotas {
private String id;
private String uId;
private String nombre;
private String tipo;
private String raza;
private String fechaNac;
private ImageView imagen;
public Mascotas() {
}
public Mascotas(String id,String uId, String nombre, String tipo, String raza, String fechaNac, ImageView imagen) {
this.id = id;
this.uId = uId;
this.nombre = nombre;
this.tipo = tipo;
this.raza = raza;
this.fechaNac = fechaNac;
this.imagen = imagen;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUId() {
return uId;
}
public void setUId(String uId) {
this.uId = uId;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public String getRaza() {
return raza;
}
public void setRaza(String raza) {
this.raza = raza;
}
public String getfechaNac() {
return fechaNac;
}
public void setFechaNac(String fechaNac) {
this.fechaNac = fechaNac;
}
public ImageView getImagen() {
return imagen;
}
public void setImagen(ImageView imagen) {
this.imagen = imagen;
}
}
Agradezco de antemano la colaboración, Adjunto unas imágenes de como salen y de como deberían salir, Gracias.
- Firebase.rar(53,5 KB)
Valora esta pregunta


0