2017-10-17 75 views
5

通過代碼實驗室火力地堡的Android友好的交談去 - 在https://codelabs.developers.google.com/codelabs/firebase-android/ - 我遇到了在那裏正在達到沒有任何回調的問題/被叫爲第7步:讀取消息回調FirebaseRecyclerAdapter沒有運行

通過/ Android的啓動項目去,我能夠通過第一步驟2-6獲得:

  1. 概述
  2. 獲取示例代碼
  3. 導入ŧ他首發應用
  4. 創建火力地堡控制檯項目
  5. 運行啓動應用程序
  6. 啓用(加入Android應用套件名稱,並通過項目控制檯SHA1等)認證

然而,當我去做第7步 - 沒有任何回調被調用。我運行該應用程序,登錄/註銷步驟正在運行。

我已(以努力確保也許我沒有錯過沿途的東西幾次嘗試)進口initial_messages.json的指示有和複製的代碼完全爲第7步..然後甚至在嘗試完成/ android項目。還有,同樣的問題,回調永遠不會運行,所以微調只是掛在那裏。

由於代碼太多,我會發布我期待回調運行的部分。任何人都可以請告訴我可能會在這裏失蹤?沒有問題 - 如果它會幫助我添加更多的代碼。感謝您閱讀

// mProgressBar.setVisibility(ProgressBar.INVISIBLE); 
    // New child entries 
    mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference(); 

    SnapshotParser<FriendlyMessage> parser = new SnapshotParser<FriendlyMessage>() { 
     @Override 
     public FriendlyMessage parseSnapshot(DataSnapshot dataSnapshot) { 
      ... 
     } 
    }; 
    ... 

    DatabaseReference messagesRef = mFirebaseDatabaseReference.child(MESSAGES_CHILD); 

    ... 

    FirebaseRecyclerOptions<FriendlyMessage> options = 
      new FirebaseRecyclerOptions.Builder<FriendlyMessage>() 
        .setQuery(messagesRef, parser) 
        .build(); 

    mFirebaseAdapter = new FirebaseRecyclerAdapter<FriendlyMessage, MessageViewHolder>(options) { 
     @Override 
     public MessageViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
      ... 
     } 

     @Override 
     protected void onBindViewHolder(final MessageViewHolder viewHolder, 
             int position, 
             FriendlyMessage friendlyMessage) { 
      .... 

     } 
    }; 

    mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { 
     @Override 
     public void onItemRangeInserted(int positionStart, int itemCount) { 
      ... 
     } 
    }); 


    mMessageRecyclerView.setAdapter(mFirebaseAdapter); 

回答

2

在FirebaseUI的3.0版本,新lifecycle policy for FirebaseRecyclerAdapter進行了介紹。因此,您現在需要在適配器上明確呼叫startListening() & stopListening()以指示它啓動&停止從數據庫檢索數據。

FirebaseUI 3.0 upgrade guide

適配器生命週期 - 在以前的版本中的適配器就開始聽 在實例立即有cleanup()呼籲停止 聽。在3.x中,您必須明確地撥打startListening()stopListening()或將LifecycleOwner傳遞給選項生成器。

這是一個非常新的版本,它看起來像代碼實驗室還沒有更新,以反映這種重大變化。我已經提出這個爲an issue on the firebase/friendlychat-android GitHub repo

+1

我不知道我應該檢查任何升級指南..好指針那裏,因爲我沒有看到它在代碼實驗室中提到..嗯?所有的代碼實驗室代碼..否則固體..只是這1丟失行'mFirebaseAdapter.startListening();'沒有一個工作。我不確定我是否應該發佈這個,認爲我一定錯過了一些明顯的東西。我知道我們應該避免謝謝你的評論 - 但在這種情況下,你確實發現了我認爲的一個重要問題。正如我猜測許多人使用這些代碼實驗室..(謝謝) – gnB

+1

很高興能幫到你!我知道你的意思,它在本週早些時候讓我出去了,我無法相信這是治癒的!這是特別奇怪的,因爲我不記得代碼實驗室甚至提到它使用FirebaseUI。同樣,他們最近[更新了示例代碼的依賴關係](https://github.com/firebase/friendlychat-android/commit/a88cd214e5528e17fd3c234d83589d85872650e2),但沒有添加非常重要的方法調用!我想這是圖書館做出重大改變時發生的情況。 – Grimthorr