Enregistrer / consulter données Firebase avec Android Studio
Résolu/FerméCR16_Padawan Messages postés 61 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 22 septembre 2024 - 17 sept. 2023 à 09:46
- Enregistrer / consulter données Firebase avec Android Studio
- Android - Guide
- Audacity enregistrer son pc - Guide
- Android recovery - Guide
- Telecharger fl studio 20 pour pc gratuit complet - Télécharger - Édition & Montage
- Enregistrer en pdf - Guide
5 réponses
Modifié le 4 sept. 2023 à 16:39
bonjour,
alors j'ai avancé un peu. J'arrive à enregistrer une image dans FireBase_Storage mais je n'arrive pas à stocker le contenu de mes EditText dans FireStore_Database.
voici mon code:
import android.app.Activity; import android.app.AlertDialog; import android.content.Intent; import android.content.pm.ActivityInfo; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.RadioButton; import android.widget.Toast; import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.android.gms.tasks.Task; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.storage.FirebaseStorage; import com.google.firebase.storage.StorageReference; import com.google.firebase.storage.UploadTask; public class Page2extends AppCompatActivity { RadioButton RB1; RadioButton RB2; EditText Text1; EditText Text2; EditText Text3; EditText Text4; EditText Text5; EditText Text6; // One Button Button BoutonP; // One Preview Image ImageView ImageP; // constant to compare // the activity result code int SELECT_PICTURE = 200; Button BoutonH; Button BoutonSM; String imageURL; Uri uri; /* RadioGroup radioGroup; RadioButton radioButton;*/ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_i_c); this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); Text1 = findViewById(R.id.Text1); Text2 = findViewById(R.id.Text2); Text = findViewById(R.id.Text); Text4 = findViewById(R.id.Text4); Text5 = findViewById(R.id.Text5); Text6 = findViewById(R.id.Text6); // register the UI widgets with their appropriate IDs ImageP = findViewById(R.id.Page2Photo); BoutonP = findViewById(R.id.BoutonP); BoutonH = findViewById(R.id.BoutonH); BoutonSM = findViewById(R.id.BoutonSM); ActivityResultLauncher<Intent> activityResultLauncher=registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { if (result.getResultCode() == Activity.RESULT_OK){ Intent data = result.getData(); uri =data.getData(); ImageP.setImageURI(uri); }else { Toast.makeText(Page2.this, "No Image Selected", Toast.LENGTH_SHORT).show(); } } }); ImageP.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent photoPicker = new Intent(Intent.ACTION_PICK); photoPicker.setType("image/*"); activityResultLauncher.launch(photoPicker); } }); BoutonSM.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { saveData(); } }); } public void saveData(){ StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("Android Images") .child(uri.getLastPathSegment()); AlertDialog.Builder builder = new AlertDialog.Builder(Page2.this); builder.setCancelable(false); builder.setView(R.layout.progress_layout); AlertDialog dialog = builder.create(); dialog.show(); storageReference.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl(); while (!uriTask.isComplete()) ; Uri urlImage = uriTask.getResult(); imageURL = urlImage.toString(); uploadData(); dialog.dismiss(); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { dialog.dismiss(); } }); } public void uploadData(){ String T1= Text1.getText().toString(); String T2= Text2.getText().toString(); String T3= Text.getText().toString(); String T4= Text4.getText().toString(); String T5= Text5.getText().toString(); String T6= Text6.getText().toString(); DataClass dataClass = new DataClass(T1, T2, T3, T4, T5, T6); FirebaseDatabase.getInstance().getReference("Android Tutorials").child(T1) .setValue(dataClass).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()){ Toast.makeText(Page2.this, "Saved", Toast.LENGTH_SHORT).show(); finish(); } } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Toast.makeText(Page2.this,e.getMessage().toString(), Toast.LENGTH_SHORT).show(); } }); } }
Merci d'avance pour votre eclairage.
Cordialement
CR16_Padawan
4 sept. 2023 à 16:01
Hello,
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.getLastPathSegment()' on a null object reference
at fr.xxx.testapp.Page2.saveData(Page2.java:119)
As-tu regardé ligne 119 ? Tu as un problème dans une chaine de caractères a priori
4 sept. 2023 à 18:24
Hello BrunoCS
Merci pour ton retour, effectivement l'erreur était que si je ne mets pas d'image ça ne fonctionne pas.
Par contre si tu as une suggestion à me faire pour stocker mes editText sur mon FireStore Database, je suis preneur.
8 sept. 2023 à 15:22
Bonjour,
j'ai finalement trouvé un code que j'ai réussi à adapter à mon projet mais je voudrais savoir si je peux affecter un ID personnalisé à mes "documents" et "collections" en fonction des EditText de l'appli?
un petit bout de code pour vous montrer ce que j'ai écrit et surtout ce que je dois modifier et comment.
j'ai tenter d'ajouter la ligne DocumentReference mais ça ne fonctionne pas.
private void addDataToFirestore(String Text1, String Text2, String Text3, String Text4, String Text5, String Text6) { // creating a collection reference // for our Firebase Firetore database. CollectionReference dbUsers = db.collection("Users"); DocumentReference dbDoc1 = db.collection("Users").document("Doc1"); // adding our data to our Users object class. Users users= new Users(Text1, Text2, Text3, Text4, Text5, Text6); // below method is use to add data to Firebase Firestore. dbUsers .add(users).addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { // after the data addition is successful // we are displaying a success toast message. Toast.makeText(Page2.this, "Your Course has been added to Firebase Firestore", Toast.LENGTH_SHORT).show(); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // this method is called when the data addition process is failed. // displaying a toast message when data addition is failed. Toast.makeText(Page2.this, "Fail to add course \n" + e, Toast.LENGTH_SHORT).show(); } }); } }
Merci d'avance pour votre aide.
CR16_Padawan
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question17 sept. 2023 à 09:46
Bonjour a tous,
Personne ne peut m'apporter une proposition?