2016-12-12 9 views
1

私は、Firebaseからデータを取得するフラグメントを持つAndroidアプリケーションを作成しています。フラグメントにFirebase AddValueEventListenerを設定する場所は?

現在、私はonStart()メソッド内に私の設定をしました。これは、初めてフラグメントにアクセスしたときにFirebaseからデータを引き出すことができますが、アプリケーション内の他のフラグメントを表示して元のフラグメントに戻るために、 Firebaseのデータは、画面を回転するまで消えます。

この問題を回避するには、どこにAddValueEventListenerメソッドを配置する必要がありますか?

+0

データは常に生きていますか? –

+0

私はあなたが何を意味しているのかは分かりませんが、その特定のフラグメントにアクセスするたびにユーザに表示されるようにします –

+0

問題を認識しようとしましたが、フラグメント内で現在使用しているFragmentPagerAdapterありがとう! –

答えて

3

短い回答:onResumeの方法に追加し、メソッドで削除します。

長い答え: フラグメントは、それが新しいフラグメントにあなたがそれを示すことにするたびに作成する必要がないように、ほとんどの場合、フラグメントのインスタンスを保持FragmentManager、によって管理されています。そのため、メソッドのonCreateonCreateViewonStartは、フラグメントの作成時または設定の変更時に一度呼び出されます。つまり、画面の回転です。

一方、onResumeメソッドは、フラグメントがフォーカスを取得するたびに呼び出され、addValueEventListenerを追加すると常に呼び出されます。しかし、これにより複数の値の偶数リスナーが追加されるため、メソッドではremoveEventListenerの方がよいでしょう。

参照:https://developer.android.com/guide/components/fragments.html

0

フラグメントのonCreateView()メソッド内にaddValueEventListenerを追加するだけです。次に、値をArrayListまたは他のコレクションクラスに格納します。このArrayListの値をFragmentに表示してください。

Notice:値outside the onDataChange()を保存することはできません。addValueEventListenerです。したがって、arraylistパラメータを使用して1つのメソッドを作成し、onDataChange()メソッドの値をその新しく作成されたメソッドに渡します。このようにして、データはnullではありません。NullPointerException

詳細については、docを参照してください。

関連する問題