0

私は数日間2つの問題と闘いがあります。私は正しい方法が何であるか分かりません。Android TablaLayoutとNavigationDrawer

  1. は、私は3つの断片(タブレイアウトとビューページャあるホーム画面)とナビゲーションの引き出しを含むビューページャでタブレイアウトを組み合わせたいです。 そして、あなたが引き出しからナビゲートできるものは、断片受け入れの設定やそれに類するものでなければならないと思います。 メインアクティビティレイアウトのレイアウトにタブレイアウトをする必要がありますか、このレイアウトをフラグメントにも入れる必要があります(そのように呼び出すホームフラグメント内のフラグメントを含むページャを表示します)。

  2. 私はユーザーがログインしているか、彼がFirebaseからデータをダウンロードしているかどうかをチェックします。私はこれを、別の断片(データ断片)で行い、そこに私は本当に設定します。 現在、タブの断片の1つにFirebaseのデータが必要ですが、すぐにそのすべてが必要になります。 どのようにデータ(リスト)をデータフラグメントからタブフラグメントまたはいわゆるホームフラグメントに渡し、次にタブに渡すのですか? 私は既にインターフェイスを試しましたが、確認の変更の処理方法はわかりません。

二つの問題あるいはその両方どのように設計アプローチは、断片のみを使用するか、聞かせて、ホーム画面を主な活動の内側と、ユーザが引き出しから移動したときに表示を変更優れている/これを解決するだろうとの組み合わせを考慮すると断片化する?

PS。できるだけ早くコードを追加します。おかげさまで

答えて

0

アクティビティがフラグメントを管理するので、TabLayoutとViewPagerはアクティビティレイアウト内にある必要があります。また、ナビゲーション・ドロワーは、アクティビティー、およびフラグメント間のアクティビティーをナビゲートする必要があります。繰り返しになりますが、これはまともなコード構成の論理的なことです。レイアウトの繰り返しを防ぐことができます(複数のボタンを同じフラグメントに移動することもできます)。

Firebaseの問題については、アクティビティで呼び出しを開始し、取得した情報を含むすべてのフラグメントの関数を呼び出すことをお勧めします。このような何か:

new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(MyFragment f : mFragmentList) 
      f.addData(dataSnapshot); 
    } 
} 

あなたは本当に断片がFirebaseへの呼び出しを行いたい場合は、あなたは、イベントとリスナーのセットを所有して作成することができます。

public class SnapshotRetrievedEvent { 
    private static List<SnapshotRetrievedListener> listeners = new ArrayList<>(); 

    public static void addListener(SnapshotRetrievedListener listener){ 
     listeners.add(listener); 
    } 

    public static void notify(DataSnapshot snapshot) { 
     for(SnapshotRetrievedListener listener : listeners) 
      listener.onSnapshotRetrived(snapshot); 
    } 
} 

public interface SnapshotRetrievedListene { 
    void onSnapshotRetrieved(DataSnapshot snapshot); 
} 

そして、スナップショットを待っているあなたの断片で、あなたはこのようにリスナーを追加します。

SnapshotRetrievedEvent.addListener(
    new SnapshotRetrievedListener(){ 
     @Override 
     public void onSnapshotRetrieved(DataSnapshot snapshot){ 
      // Do stuff 
     } 
    } 
); 

あなたが他のフラグメントにSnapshotRetrievedEvent.notify(snapshot)を呼び出すときonSnapshotRetrievedが呼び出されます。

希望これは

+0

を助け、私はあなたがMOD流暢UXを持つようにナビゲーション引き出しでフラグメントを使用するようになっていたと思いましたか? –

+0

確かに普及しているようです。私はそれがアプリケーション自体とあなたがそれでやりたいことに依存していると思います。私はまだ、TabLayoutを持つViewPagerはナビゲーション用の専用であるべきだと思う。 – Sunshinator

関連する問題