2017-02-22 37 views
1

По существу, я создаю будильник, который позволяет отключить будильник, если вы сканируете штрих-код, значение которого было введено в мою базу данных Firebase под дочерним «контентом». На данный момент у меня есть сканер, который сканирует код и отображает это значение в TextView contentTxt в приложении для Android.Как проверить, соответствуют ли данные в моей базе данных Firebase моей TextView.toString в Java?

Когда я нажимаю кнопку «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

Существует никаких фактических кодов ошибок или сбоев не приходят в мой кода, он просто постоянно говорит, что нет одинаковых значений, и тогда я не могу заставить проклятый будильник выключиться.

Как я понимаю, я указал свой код на «штрих-коды» ребенка и упорядочил его дочерним «контентом», при условии, что он равен моему контенту contentTxt.toString. Для меня это звучит так, будто это должно изолировать эту ценность и посмотреть, имеет ли она какую-либо ценность, поэтому, возможно, вы можете просветить меня. Я даже пытался экспериментировать с изменением dataSnapshot.hasChildren() на .exists() и т. Д., Но безрезультатно.

ответ

1

Просто чтобы прокомментировать, что я исправил проблему. Вместо contentTxt.toString() я должен был использовать contentTxt.getText().toString(). Глупая ошибка, спасибо за вашу помощь.

0

Вместо dataSnapshot.hasChildren(), попробуйте dataSnapshot.exists().

+0

Я тоже пробовал, но, к сожалению, он все еще запускает код else. Даже глядя на текстовое представление, а затем на db, строки точно такие же, поэтому я действительно не знаю, что я делаю неправильно. –

 Смежные вопросы

  • Нет связанных вопросов^_^