簡體   English   中英

我使用片段嗎?

[英]Am I using fragments right?

我對使用片段的思想正確方法有點困惑。

正如Android開發者所述,

片段表示活動中的行為或用戶界面的一部分。 您可以在單個活動中組合多個片段以構建多窗格UI,並在多個活動中重用片段。 您可以將片段視為活動的模塊化部分,它具有自己的生命周期,接收自己的輸入事件,並且可以在活動運行時添加或刪除(有點像“子活動”,您可以在不同的活動中重用)。

並且:

片段將應用程序功能和UI分解為可重用模塊將多個片段添加到屏幕以避免切換活動

我對片段的使用方式如下:我只有一個主要的Activity和一大堆片段。 我更喜歡更換碎片,而不是開始活動。 例如,我有FeedsFragmentFriendsFragmentMessagesFragment ,當我從滑動菜單選擇一些東西,我的Activity剛剛替換主Fragment 如果我從其他Fragment中啟動Fragment,我會將前一個片段放在backstack中。

有些片段需要Activity來改變動作欄,我直接做

((MainActivity)getActivity()).setupActionBar();

目前我沒有任何支持平板電腦布局的代碼(如Android開發人員的示例所示),但我打算添加它。

那么,這是正確的做事方式嗎? 還是我完全錯過了什么?

如您所知,fragment有自己的生命周期,您可以在活動生命周期中使用它的事件。

但是片段生命周期取決於活動生命周期所以當活動被破壞時,碎片也會被破壞。

// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();    
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);    
// Commit the transaction
transaction.commit();

喲可以使用片段事務,在一個活動中替換它們,我想你用同樣的方式,

我認為你的方式不對,使用片段而不是使用不同的活動是沒有問題的。

但你應該考慮一下,你真的需要在一個活動中使用它們嗎? 如果您不需要在一個活動中顯示它們,則不需要使用片段。

片段必須始終嵌入到活動中,片段的生命周期直接受主機活動生命周期的影響。 例如,當活動暫停時,其中的所有片段也都會暫停,當活動被破壞時,所有片段也都會被破壞。 但是,當一個活動正在運行時(它處於恢復的生命周期狀態),您可以獨立操作每個碎片,例如添加或刪除它們。 執行此類片段事務時,還可以將其添加到由活動管理的后台堆棧中 - 活動中的每個后台堆棧條目都是發生的片段事務的記錄。 后向堆棧允許用戶通過按“返回”按鈕來反轉片段事務(向后導航)。

因此,它沒有錯,但我認為如果你不需要,創建不同的活動很容易維護。

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM