Android - Android Studio Firebase

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 7 puestos en Android (en relación al último mes)
Gráfica de Android

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:

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();
//é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.


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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de algoritmo
Val: 64
Bronce
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Android Studio Firebase

Publicado por algoritmo (22 intervenciones) el 12/10/2020 22:45:25
Hola he subido un tutorial de firebase que tal vez resuelva tus dudas.

Tal vez tu problema se deba a los permisos... también ayudaría conocer que mensajes de error devuelve el addOnFailureListener.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar