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

标签 android database firebase firebase-realtime-database match

本质上,我正在创建一个闹钟,它只允许您在扫描条形码时关闭闹钟,该条形码的值已输入到我的 Firebase 数据库中的子“内容”下。我目前拥有的是扫描代码并在 Android 应用程序的 TextView contentTxt 上显示此值的扫描仪。

当我单击“checkButton”时,应该将此 TextView 更改为 String,然后运行数据库以检查是否有任何匹配它的值。如果有,它将停止警报。如果没有,它将显示“这不是扫描的条形码”的通知。然而,即使我的 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

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

据我所知,我已将我的代码指向子“barcodes”并按其子“content”排序,前提是它等于我的 contentTxt.toString。对我来说,这听起来像是应该隔离那个值,看看它是否有任何值(value),所以也许你可以启发我。我什至尝试过将 dataSnapshot.hasChildren() 更改为 .exists() 等,但无济于事。

最佳答案

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

关于android - 如何检查我的 Firebase 数据库中的数据是否与 Java 中的 TextView.toString 匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42384000/

相关文章:

mysql - 在 MySQL 中更新了错误的值

sql - 使用日期函数获取仅小于特定日期的日期

android - 仅向 firebase 中的一个用户发送通知

java - 解析 JSONObjects 并转换为 Java 对象时出现奇怪的问题

android - lib 支持 appcompat_v7 时出错

mysql - 同时处理数百个 RDS mysql 数据库

android - 如何在 Firebase 中将 emailAndPasswordAuth 与 PhoneAuth 合并?

node.js - 缺少 node-v59-linux-x64/grpc_node.node

android - npm 错误!在project@0.0.1启动脚本 'react-native start'处失败

javascript - 调用函数时,返回未定义