java - 为什么我不能正确检索数据?

标签 java android firebase firebase-realtime-database

<分区>

我的简单的基于 firebase 的应用程序有点问题。我正在尝试像这样从数据库中检索数据:

public void readbuttonposition() {
        database.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot buttonSnapshot: dataSnapshot.getChildren()){
                    ButtonPosition buttonPosition = buttonSnapshot.getValue(ButtonPosition.class);
                    String user = buttonPosition.getbutton_position();

                    if (user == "1"){
                        button2.setVisibility(View.GONE);
                        button3.setVisibility(View.VISIBLE);
                    }
                    else if (user == "0"){
                        button2.setVisibility(View.VISIBLE);
                        button3.setVisibility(View.GONE);
                    }
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

只有两个按钮,每个按钮都给出值:0 和 1。如您所见,当 button2VISIBLE 时,则为 button3GONE。没关系,当我按下按钮时,一切都很好。但是当我想重新启动应用程序并再次启动它时,总是可以看到 button2,即使是数据库 button_position 的值为 1,这应该使 button3 可见。这是 firebase 树 screenshot 的屏幕截图 和 DatabaseReference 路径: database = FirebaseDatabase.getInstance().getReference("users").child(user.getUid()).child("hours"); 我也以这种方式检索 start_hour 并且工作正常,那么我在哪里失败了? :D

@edit ButtonPosition.class 代码

public class ButtonPosition {
    String button_position;

    public ButtonPosition(){

    }

    public ButtonPosition(String button_position) {
        this.button_position = button_position;
    }
    public String getbutton_position(){
        return button_position;
    }
}

最佳答案

正如 Bob 在评论中所说,当比较字符串时,您需要使用 equals() 方法,例如:if(users.equals("x")){... }

并在您的类(class)中添加二传手:-

 public class ButtonPosition {
String button_position;

public ButtonPosition(){

}

public ButtonPosition(String button_position) {
    this.button_position = button_position;
}

 public void setButtonPosition(String button_position){
  this.button_position = button_position;
  }

public String getButtonPosition(){
    return button_position;
  }
}

关于java - 为什么我不能正确检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48466284/

相关文章:

java - 使用java比较两个TIME变量

java - 获取任何给定输入字符串中具有不同字符的最长子字符串的长度

xml - Android - 我应该使用多个 Activity 还是多个内容 View

firebase - Facebook 身份验证成功后如何重定向到新页面

java - Java中的全屏透明颜色叠加

java - 何时在 Swing 应用程序中显示无效输入的错误消息

android - 没有找到 native/UnsatisfiedLinkError 的实现让我抓狂

android - 如何在android中解析没有json对象标题的json数组?

php - 使用 Firebase 的 Laravel FCM 推送通知不适用于 iOS,但适用于 Android

swift - iOS 写入 Firebase 导致崩溃