【问题标题】:Android fetching values from Firebase DatabaseAndroid 从 Firebase 数据库中获取值
【发布时间】:2017-11-19 06:20:37
【问题描述】:

您好,我已经挣扎了一段时间了。我想就我的代码向某人咨询。我要申请 我的应用程序的着色功能。

当人们按下按钮时:

  • GREEN 声明它将数据库上的值更新为BEING HOUSEKEPT

  • YELLOW按下状态时发送READY FOR INSPECTION RoomStatus

  • RED按下时的状态发送READY FOR HOUSEKEEPING RoomStatus

它之前工作过,但是当我试图限制作为管家的用户无法访问用于管家的 RED STATE 的用户时,我在我的代码中插入了我想要实现它的地方。

我在这里重复循环,谁能告诉我我哪里做错了?

这是我的代码:

        Button room1;
        private DatabaseReference mFirebaseDatabase, mFirebaseDatabase1, mFirebaseDatabase1room;
        private FirebaseDatabase mFirebaseInstance;
        private DatabaseReference referenceroom1;
        private  String roomStat;



        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_navi_to_scan2);
            mFirebaseInstance = FirebaseDatabase.getInstance();
            mFirebaseDatabase1 = mFirebaseInstance.getReference("Rooms");
            mFirebaseDatabase = mFirebaseInstance.getReference("Users");
            mFirebaseDatabase1room = mFirebaseInstance.getReference("Rooms").child("Room1");
            referenceroom1 = mFirebaseDatabase1.child("Room1").child("RoomStatus");

            room1 = (Button) findViewById(R.id.rm1Btn);




            mFirebaseDatabase1.child("Room1").addValueEventListener(new ValueEventListener() { //attach listener

                @Override
                public void onDataChange(DataSnapshot dataSnapshot) { //something changed!


                    for (DataSnapshot locationSnapshot : dataSnapshot.getChildren()) {
                        String location = locationSnapshot.getValue().toString();

                        if (location.equals("READY FOR HOUSEKEEPING")) {
                            room1.setBackgroundColor(Color.GREEN);
                            roomStat = "Green";
                        } else if (location.equals("BEING HOUSEKEPT")) {
                            room1.setBackgroundColor(Color.YELLOW);
                            roomStat = "Yellow";
                        } else {
                            room1.setBackgroundColor(Color.RED);
                            roomStat = "Red";
                        }


                        if (roomStat.equals("Green")) {

                            room1.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View view) {
                                    String message = "BEING HOUSEKEPT";
                                    DatabaseReference reference = mFirebaseDatabase1.child("Room1").child("RoomStatus");
                                    reference.setValue(message);
                                    Intent next1 = new Intent(getApplicationContext(), ReaderActivity3.class);
                                    startActivity(next1);
                                }
                            });


                        } else if (roomStat.equals("Yellow")) {
                            room1.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View view) {
                                    String message = "READY FOR INSPECTION";
                                    DatabaseReference reference = mFirebaseDatabase1.child("Room1").child("RoomStatus");
                                    reference.setValue(message);
                                    Intent next1 = new Intent(getApplicationContext(), ReaderActivity2.class);
                                    startActivity(next1);




                                }
                            });

                        } else {
                            room1.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View view) {
                                    String message = "READY FOR HOUSEKEEPING";
                                    DatabaseReference reference = mFirebaseDatabase1.child("Room1").child("RoomStatus");
                                    reference.setValue(message);
                                    Intent next1 = new Intent(getApplicationContext(), ReaderActivity.class);
                                    startActivity(next1);



                                    //I ALSO WANT TO PUT A CONDITION HERE FETCHING  userType from Structure
                                    // mFirebaseDatabase = mFirebaseInstance.getReference("Users").child("userKey");
                                    //but doing this would mean that I would have to put a listener inside, would that be okay? I tried when this
                                    //was working at first but it didin't and now the whole thing is not working


                                }
                            });

                        }
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) { //update UI here if error occurred.

                }
            });



        }

这是我的结构:

你能帮我找出我如何实现它的问题吗?

【问题讨论】:

  • Room1 的孩子们里面是什么?你能用这些数据添加一个新的截图吗?
  • @Alex Mamo 我已经编辑了问题请看图片谢谢

标签: android firebase firebase-realtime-database


【解决方案1】:

我没看错,尝试调试。 Android 现在有很多问题,尤其是当您连接到云数据库时。在运行按钮的左侧,虫子形了一个。调试。

或者,也许您可​​以尝试显示您的字符串 location,以检查您是否从数据库中提取了正确的信息。您可以使用日志。可以在这里找到指南

https://developer.android.com/studio/debug/am-logcat.html

【讨论】:

    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多