如何检查Firebase数据库中的数据是否与Java中的TextView.toString匹配?

时间:2017-02-22 06:15:21

标签: android database firebase firebase-realtime-database match

基本上,我正在创建一个闹钟,只有当您扫描条形码时才会关闭闹钟,该条形码的值已输入我的Firebase数据库的子内容"内容"。我目前所拥有的扫描程序扫描代码并在Android应用程序的TextView contentTxt上显示此值。

当我单击" checkButton"时,应该将此TextView更改为toString,然后运行数据库以检查是否存在与其匹配的任何值。如果有,它将停止警报。如果没有,它将显示"这不是扫描条形码的通知"。但是,即使我的firebase中的值与我的TextView中的值相同,它也只是说它不是扫描条形码。

这是我的代码:

            final Button checkButton = (Button) findViewById(R.id.checkBtn);
        checkButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                mDatabase.child("users").child(mUserId).child("barcodes").orderByChild("content")
                        .equalTo(contentTxt.toString()).addListenerForSingleValueEvent(new ValueEventListener(){
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        if (dataSnapshot.hasChildren()){
                            // method that alters update text TextBox
                            set_alarm_text("Alarm off!");

                            // cancel the alarm
                            alarm_manager.cancel(pending_intent);

                            // put in extra string into my_intent, telling the clock that "Alarm Off" was pressed
                            my_intent.putExtra("extra", "alarm off");

                            // stop the ringtone
                            sendBroadcast(my_intent);
                        }
                        else{
                            Toast toast = Toast.makeText(getApplicationContext(),
                                    "This is not a scanned barcode!", Toast.LENGTH_SHORT);
                            toast.show();
                        }
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
            }
        });

以下是我的Firebase的屏幕截图,如果有帮助的话:

Screenshot showing my database's hierarchy and children

我的代码中没有出现实际的错误代码或崩溃,它只是不断地说没有相同的值,然后我就无法关闭该死的警报。

根据我的理解,我已将我的代码指向儿童"条形码"并按其子项" content"排序,只要它与我的contentTxt.toString相等。对我来说,听起来它应该隔离那个价值,看它是否有任何价值,所以也许你可以启发我。我甚至尝试过将dataSnapshot.hasChildren()更改为.exists()等,但无济于事。

2 个答案:

答案 0 :(得分:1)

只是评论我解决了问题。我应该使用contentTxt.toString()而不是contentTxt.getText().toString()。愚蠢的错误,谢谢你的帮助。

答案 1 :(得分:0)

而不是dataSnapshot.hasChildren(),请尝试dataSnapshot.exists()