2017-09-07 41 views
0

我想在收聽停止時離開頁面。當移動到另一頁時停止收聽

FirebaseDatabase firebaseDatabase; 
DatabaseReference myRef; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_showcomments); 


} 




    private void callFireBase() 
     { 
      firebaseDatabase = FirebaseDatabase.getInstance(); 
      myRef = firebaseDatabase.getReference(); 
      myRef.child(id).addChildEventListener(new ChildEventListener() { 
       @Override 
       public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

       } 

       @Override 
       public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
        Toast.makeText(showcomments.this, "" + dataSnapshot.child("comment").getValue().toString(), Toast.LENGTH_SHORT).show(); 
       } 

       @Override 
       public void onChildRemoved(DataSnapshot dataSnapshot) { 

       } 

       @Override 
       public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 
        Toast.makeText(showcomments.this, "hey", Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 


     @Override 
     protected void onPause() { 
      super.onPause(); 
      myRef.removeEventListener(firebaseDatabase); 
     } 

當我去到另一個網頁我出來的應用程序我想停下來聽我嘗試了很多,搜索在同一網站上的主題,但沒有任何用處

+4

這行代碼甚至沒有像它應該編譯:'myRef.removeEventListener(firebaseDatabase);'你可以不會將FirebaseDatabase的實例傳遞給該方法。它需要一個事件監聽器。 –

回答

1

實施ChildEventListener發現到您的Activity然後在去掉Activity時將其刪除。

public class MyActivity extends Activity implements ChildEventListener { 

    FirebaseDatabase firebaseDatabase; 
    DatabaseReference myRef; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_showcomments); 
    } 

    private void callFireBase() { 
     firebaseDatabase = FirebaseDatabase.getInstance(); 
     myRef = firebaseDatabase.getReference(); 
     myRef = myRef.child(id); 
     myRef.addChildEventListener(this); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     myRef.removeEventListener(this); 
    } 

    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

    } 

    @Override 
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
     Toast.makeText(showcomments.this, "" + dataSnapshot.child("comment").getValue().toString(), Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onChildRemoved(DataSnapshot dataSnapshot) { 

    } 

    @Override 
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Toast.makeText(showcomments.this, "hey", 
       Toast.LENGTH_SHORT).show(); 
    } 


} 

請不要這樣,並相應地保存DatabaseReference從要removeListener

+0

當我離開並再次返回時,他總是踢我 – ShWaEkI

相關問題