java - 如何根据数据库中的数字制作 "int"? - java

标签 java android firebase firebase-realtime-database integer

我正在做一个游戏,到目前为止我已经为测试做了两个按钮。第一个按钮获胜,第二个按钮失败,所有这些都添加到数据库中。
enter image description here

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/

相关文章:

ios - 如何将 -ObjC 添加到 Xcode 中的链接器文件

java - 无法解析符号 'Before' - Intellij jUnit

java - 刽子手 : Remember Previous Guesses

java - Android 4.4 KitKat 无法快速关闭 ChunkedInputStream

java - 将迭代器添加到集合中

android - ProgressDialog 关闭 onClick

android - Firebase无法检测到我的Flutter应用,并且无法发送推送通知

android - 如何在自定义 Android x86 平台上安装 libhoudini

javascript - 检索嵌套对象 JavaScript

android - iOS/Android firebase 后台同步