[Firebase] Récupérer une valeur de ma base de donné, la modifier puis la save
Krisix
-
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
Je sollicite votre aide pour vous demander comment on peut récupérer une String de ma base de donné (sur Firebase) pour la transformer en un Integer puis lui ajouter 1 lorsqu'on appuie sur un bouton et ensuite la réenregistrer sur le serveur.
Voila ce que j'ai essayé de faire donc avec OnDataChange je récupére la valeur puis j'essaye la transformer en int avec int score = Integer.parseInt(coins);
mais quand je réutilise score dans la fonction OnClickListener mais Android Studio m'indique "Cannot resolve score". Donc je ne sais pas comment faire.
Voici mon code :
Merci à celles et ceux qui prendront le temps de me répondre d'une quelconque manière.
Krisix
Je sollicite votre aide pour vous demander comment on peut récupérer une String de ma base de donné (sur Firebase) pour la transformer en un Integer puis lui ajouter 1 lorsqu'on appuie sur un bouton et ensuite la réenregistrer sur le serveur.
Voila ce que j'ai essayé de faire donc avec OnDataChange je récupére la valeur puis j'essaye la transformer en int avec int score = Integer.parseInt(coins);
mais quand je réutilise score dans la fonction OnClickListener mais Android Studio m'indique "Cannot resolve score". Donc je ne sais pas comment faire.
Voici mon code :
public class HomeFragment extends Fragment { public HomeFragment() { // Required empty public constructor } //firebase FirebaseAuth firebaseAuth; FirebaseUser user; FirebaseDatabase firebaseDatabase; DatabaseReference databaseReference; StorageReference storageReference; //init view ImageButton addCoinsBtn; TextView coinsTv; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view =inflater.inflate(R.layout.fragment_home, container, false); //init firebase firebaseAuth = FirebaseAuth.getInstance(); user = firebaseAuth.getCurrentUser(); firebaseDatabase = FirebaseDatabase.getInstance(); databaseReference = firebaseDatabase.getReference("Users"); storageReference = getInstance().getReference();//firebase storage reference coinsTv=(TextView)view.findViewById(R.id.coinsTv); addCoinsBtn=(ImageButton)view.findViewById(R.id.add_coins); Query query = databaseReference.orderByChild("email").equalTo(user.getEmail()); query.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { //check until required data get for (DataSnapshot ds : dataSnapshot.getChildren()){ //get data String coins = ""+ds.child("coins").getValue(); int score = Integer.parseInt(coins); //set data coinsTv.setText(score); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); addCoinsBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference coins = database.getReference("Users/"+ user.getUid() +"/coins"); Integer score = score + 1; String scorefinal = Integer.toString(score); coins.setValue(scorefinal); } }); return view; } }
Merci à celles et ceux qui prendront le temps de me répondre d'une quelconque manière.
Krisix
A voir également:
- [Firebase] Récupérer une valeur de ma base de donné, la modifier puis la save
- Modifier dns - Guide
- Save as pdf office 2007 - Télécharger - Bureautique
- Modifier liste déroulante excel - Guide
- Base de registre - Guide
- Recuperer message whatsapp supprimé - Guide
1 réponse
Bonjour,
Tu as un problème de portée de variable. Es-tu familiarisé avec cette notion ?
La durée de vie d'une variable est le bloc qui la comprend. Ici, tu as déclaré
Note : Une fois ton souci précédent corrigé, la ligne suivante ne fonctionnera pas
Tu déclares une variable qui existe déjà. Pour incrémenter une variable, utilises l'opération
Tu as un problème de portée de variable. Es-tu familiarisé avec cette notion ?
La durée de vie d'une variable est le bloc qui la comprend. Ici, tu as déclaré
scoredans ton
onDataChange(). Du coup, une fois le déroulement de ta méthode terminé, ta variable est détruite. Si tu veux l'utiliser dans plusieurs méthodes, il faut la déclarer plus haut, en tant que variable de classe par exemple.
Note : Une fois ton souci précédent corrigé, la ligne suivante ne fonctionnera pas
Integer score = score + 1;
Tu déclares une variable qui existe déjà. Pour incrémenter une variable, utilises l'opération
++