2017-02-22 1 views
1

基本的には、自分のFirebaseデータベースに子供の "コンテンツ"の値が入力されたバーコードをスキャンすると、アラームをオフにすることができます。私が現在持っているのは、コードをスキャンし、この値をAndroidアプリのTextView contentTxtに表示するスキャナです。FirebaseデータベースのデータがJavaのTextView.toStringと一致するかどうかをチェックする方法は?

私は「チェックボタン」をクリックすると、これはそれをのtoStringを変更し、それに一致する値があるかどうかを確認するために、データベースを介して実行TextViewに取るようになっています。ある場合は、アラームを停止します。表示されていない場合は、「これはスキャンされたバーコードではありません」という通知を表示します。しかし、Firebaseの値がTextViewの値と同じであっても、スキャンされたバーコードではないとしか言​​いようがありません。ここで

は私のコードです:

Screenshot showing my database's hierarchy and children

を私に来る実際のエラーコードまたはクラッシュはありません。ここで

  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()

答えて

1

私は問題を解決したとだけコメントします。 contentTxt.toString()の代わりにcontentTxt.getText().toString()を使用してください。愚かな間違い、あなたの助けに感謝します。

0

dataSnapshot.exists()を試してみてください。

+0

私もそれを試みましたが、残念ながらそれはまだelseコードを実行しています。 textviewとdbを見ても、文字列はまったく同じなので、私が間違っていることは本当にわかりません。 –

関連する問題