本质上,我创建的闹钟仅允许您在扫描条码的数值已输入我的Firebase数据库的子内容下的情况下关闭闹钟。目前我所拥有的扫描仪可扫描代码并在Android应用程序的TextView contentTxt中显示此值。如何检查我的Firebase数据库中的数据是否与我的Java中的TextView.toString相匹配?
当我点击“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) {
}
});
}
});
这里是我的火力地堡的截图还,如果这能帮助:
没有实际的错误代码或崩溃即将在我的代码,它只是不断说有没有相同的值,然后我不能让该死的警报关闭。
正如我的理解,我曾指出我的代码给孩子“条形码”,并通过其子“内容”命令,只要它是equalTo我contentTxt.toString。对我来说,这听起来像是应该隔离那个价值,看看它是否有价值,所以也许你可以启发我。我甚至尝试将dataSnapshot.hasChildren()更改为.exists()等,但无济于事。
我尝试过,但不幸的是它仍然运行其他代码。即使看看textview和db,字符串也完全一样,所以我真的不知道我在做什么错了。 –