0

我有兩個問題,奮鬥了幾天。我不確定什麼是正確的方法。Android TablaLayout和NavigationDrawer

  1. 我想將標籤佈局與含有三個片段(的標籤佈局和視圖尋呼機是主屏幕)和導航抽屜的圖尋呼機結合。 而且我認爲您可以從抽屜導航到的所有內容應該是片段接受設置或類似的東西。 所以,我應該讓主佈局佈局中的標籤佈局,還是我應該把這個佈局也放在一個片段中(這樣查看帶有片段的尋呼機在一個如此調用的Home片段中)?

  2. 當啓動應用程序時,我檢查用戶是否已登錄,並且他是否從Firebase下載數據。我在另一個片段(數據片段)中執行此操作,並將其設置爲true。 因此目前其中一個標籤片段需要來自Firebase的數據,但很快他們都需要它。 如何將數據(列表)從數據片段傳遞到選項卡片段或所謂的主頁片段,然後傳遞到選項卡。 我已經嘗試過接口,但我不知道如何處理確認更改。

考慮到兩個問題或將兩者結合,你會怎麼當用戶從抽屜導航解決這一/哪種設計方法更好只使用片段或讓主要活動內的主屏幕和更改視圖碎片?

PS。我會盡快添加一些代碼。 謝謝。

回答

0

TabLayout和ViewPager應該在活動佈局中,因爲它更有意義,因爲活動管理碎片。此外,導航抽屜應瀏覽「活動」和「片段之間的活動」。同樣,這對於一個體面的代碼組織來說是合乎邏輯的,它可以防止重複佈局(也就是多個按鈕導航到相同的片段)。

對於Firebase問題,我建議您在Activity中啓動調用,然後使用檢索到的信息在所有片段中調用函數。事情是這樣的:

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

如果你真的想要的片段,使呼叫火力地堡,那麼你可以創建自己的事件和監聽集。

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專門用於導航,所以我仍然認爲帶有TabLayout的ViewPager應該獨立於導航抽屜。 – Sunshinator

相關問題