Мне нужно, чтобы вы помогли мне решить эту проблему:
Проблема в том, что я хочу прочитать String
с именем coins
из базы данных Firebase и затем превратить его в Integer
значение. Затем, когда я нажимаю sh кнопку, я хочу добавить 1 к монетам и после этого я превращаю его обратно в значение String
, чтобы сохранить его в базе данных.
Поэтому я попытался сделать это с помощью onDataChange
, чтобы прочитать данные, а затем использовать int score = Integer.parseInt(coins)
чтобы превратить его в Integer
значение, называемое счетом.
После этого я использовал onClickListener
, чтобы добавить 1 к целому числу, но Android Studio говорит мне:
Не удается разрешить счет
Я не знаю, как решить эту проблему, поэтому я был бы очень рад, если бы вы могли помочь мне с этим.
Это мой код :
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;
}
}
Большое спасибо за помощь.