2017-04-05 7 views
1

私はFirebaseをテストするための基本的なプログラムを持っています。私は2つのボタンがあります。第一、第二「b」を書いていると私はサービスでそれらをチェックしています、Firebaseデータベース「A」に書いている:Firebase OnDataChange関数が間違った時間をトリガしましたか?

myRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String value = dataSnapshot.getValue(String.class); 
      if(value=="a") 
      { 
       ToneGenerator toneGenerator= new ToneGenerator(AudioManager.STREAM_DTMF,ToneGenerator.MAX_VOLUME); 
       //this will play tone for 2 seconds. 
       toneGenerator.startTone(ToneGenerator.TONE_DTMF_1, 500); 
       try { 
        Thread.sleep(1000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       toneGenerator.startTone(ToneGenerator.TONE_DTMF_1, 500); 

      } 

      if(value=="b") 
      { 
       ToneGenerator toneGeneratora= new ToneGenerator(AudioManager.STREAM_DTMF,ToneGenerator.MAX_VOLUME); 
       //this will play tone for 2 seconds. 
       toneGeneratora.startTone(ToneGenerator.TONE_DTMF_3, 500); 
       try { 
        Thread.sleep(1000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       toneGeneratora.startTone(ToneGenerator.TONE_DTMF_3, 500); 

      } 

問題でも、私はインターネットに接続していなく、ですが、私が意味します私がボタンをクリックするとFirebaseデータベースに書き込むことはできませんが、OnDataChangedの機能はまだ起動しています。私は、データベースのデータが変更されたときに何かしたい。

更新:私はデータベースを手動で変更しましたが、OnDataChangeはトリガされません。プログラムの起動中は一度だけ動作します。

答えて

2

ChildEventListenerを使用すると、実行するコードを​​メソッド内に置くことができます。

+0

これはかなり驚くべきことです。ありがとう! –

関連する問題