基本的には、自分のFirebaseデータベースに子供の "コンテンツ"の値が入力されたバーコードをスキャンすると、アラームをオフにすることができます。私が現在持っているのは、コードをスキャンし、この値をAndroidアプリのTextView contentTxtに表示するスキャナです。FirebaseデータベースのデータがJavaのTextView.toStringと一致するかどうかをチェックする方法は?
私は「チェックボタン」をクリックすると、これはそれをのtoStringを変更し、それに一致する値があるかどうかを確認するために、データベースを介して実行TextViewに取るようになっています。ある場合は、アラームを停止します。表示されていない場合は、「これはスキャンされたバーコードではありません」という通知を表示します。しかし、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のスクリーンショットですコードでは、同じ値が存在しないと絶えず継続しています。そして、私は気になるアラームをオフにすることはできません。
私の理解で、私は子供の「バーコード」に私のコードを指摘し、その子「コンテンツ」で注文してきたように、それは私のequalTo contentTxt.toString提供されます。私には、その価値を切り離し、価値があるかどうかを確認する必要があるように聞こえるので、おそらくあなたは私を啓発することができます。私はdataSnapshot.hasChildren()を.exists()などに変更しようと試みてみましたが、無駄です。代わりにdataSnapshot.hasChildren()
の
私もそれを試みましたが、残念ながらそれはまだelseコードを実行しています。 textviewとdbを見ても、文字列はまったく同じなので、私が間違っていることは本当にわかりません。 –