我正在做一个游戏,到目前为止我已经为测试做了两个按钮。第一个按钮获胜,第二个按钮失败,所有这些都添加到数据库中。
int win_int = 0;
int lose_int = 0;
事实上,每次你进入这个 Activity 时,数字都会被重置为零,因为我在变量中设置了数字 0。我想了解如何让“整数”不仅仅是一个数字,而是数据库中的数字。以下是两个按钮的代码:
Button win = (Button)findViewById(R.id.Poke);
win.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
winsRef = database.getReference();
winsRef.child("players/").child(playerName).child("/wins").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getRef().setValue(win_int = win_int + 1);
Toast.makeText(DuelGame.this, "+1 win!", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(DuelGame.this, "Data error!", Toast.LENGTH_SHORT).show();
}
});
}
});
Button lose = (Button)findViewById(R.id.lose_POKE);
lose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
losesRef = database.getReference();
losesRef.child("players/").child(playerName).child("/loses").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getRef().setValue(lose_int = lose_int + 1);
Toast.makeText(DuelGame.this, "+1 Lose!", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(DuelGame.this, "Data error!", Toast.LENGTH_SHORT).show();
}
});
}
});
一般来说,我希望每次进入 Activity 时,数字都不会重置为零,并且 Integer 从数据库中获取数字并基于它们,而不是变量中的零。
最佳答案
如果要增加数据库中的值,可以使用 atomic increment operation :
Map updates = new HashMap();
updates.put("wins", ServerValue.increment(1));
database.getReference().child("players/").child(playerName).updateChildren(updates);
关于java - 如何根据数据库中的数字制作 "int"? - java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72970450/