2017-10-17 4 views
5

実行していない - https://codelabs.developers.google.com/codelabs/firebase-android/では - 私はステップ7のために呼ばれるコールバックのどれも達していないされている問題/に実行しています:メッセージコールバックFirebaseRecyclerAdapterためFirebaseアンドロイドフレンドリーチャットのコードラボを通って行く

を読みます

    1. 概要サンプル・コードを入手
    2. 輸入トン:/アンドロイドスタートプロジェクトを通って行く、私は最初のステップ2-6を介して取得することができています彼はアプリスターター
    3. Firebaseコンソールプロジェクト
    4. 実行スターターアプリを作成し
    5. 私が行くとき、認証、しかし

    (アンドロイドアプリは、パッケージ名とプロジェクトコンソールからSHA1などを追加)を有効にしますステップ7を実行する - コールバックが呼び出されることはありません。私はアプリを実行し、サインイン/アウトの手順が働いています。

    私はそこに指示し、正確ステップ7 のためのコードの上にコピーされたとして(努力でいくつかの試みが、多分私は道に沿って何かを逃さなかったことを確認する)initial_messages.jsonをインポート...、その後においても試してみました完成/アンドロイドプロジェクト。また、コールバックが実行されないので、スピンナーがそこにハングアップする同じ問題があります。

    コードがたくさんあるので、コールバックを実行する予定のセクションを投稿します。誰も私がここで行方不明になるかもしれないことについて助言してもらえますか?そして問題はありません。もし私が持っているコードをもっと追加するのが助けになるのならば。読書ありがとう

    // 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

    アップグレードガイドで確認する必要があるとは思わなかった。コードラボで言及されていないので、そこに良いポインタがあります。すべてのコードLabコード..そうでなければ実線です。この1行が欠落しています。 'mFirebaseAdapter.startListening();私はこれを投稿しなければならないかどうか分からず、明らかに何かを見逃しているに違いないと思った。私は、あなたのコメントに感謝することを避けなければならないことを知っています - しかし、この場合、あなたは本当に私が思う重要な問題を捉えました。私は多くの人々がこれらのCode Labsを使用していると推測しています。私の一日を確かに保存しました(ありがとう) – gnB

    +1

    私は助けてよかった!私はあなたが何を意味しているのか知っています、今週早く私を連れてきました。そして、私はこれが治療法だとは信じられませんでした!これは特に奇妙なことですが、私はコードラボがFirebaseUIを使用していることを覚えていないからです。同様に、最近[サンプルコードの依存関係を更新しました](https://github.com/firebase/friendlychat-android/commit/a88cd214e5528e17fd3c234d83589d85872650e2)、その非常に重要なメソッド呼び出しを追加しませんでした。私は、ライブラリが変更を破るときに起こることだと思います。 – Grimthorr

    関連する問題