2013-03-25 60 views
4

我對使用片段的思想上正確的方式有些困惑。我正在使用片段嗎?

作爲Android開發狀態,

甲片段表示行爲或在 活動的用戶界面的一部分。您可以在單個活動中合併多個片段到 構建多窗格用戶界面並在多個活動中重複使用片段。您可以將某個片段視爲活動的模塊化部分,該活動在其自身的生命週期中擁有 ,接收自己的輸入事件,並且可以在活動運行時添加或刪除哪些內容(有點像「sub 」活動「你可以在不同的活動中重複使用)。

而且也:

碎片分解應用程序的功能和用戶界面爲可重用 模塊多個片段添加到屏幕上,以避免切換 活動

我的片段的使用去以下方式: 我只有一個主要活動和一大堆碎片。我不喜歡開始活動,而更喜歡更換碎片。 例如,我有FeedsFragment,FriendsFragment,MessagesFragment,並且當我從滑動菜單中選擇某個內容時,我的Activity只替換主要Fragment。如果我從其他片段啓動片段,則將前一片段放入後臺。

有些片段需要活動來改變動作條,一個我直接

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

做到這一點目前我沒有支持平板電腦的佈局(如在Android開發實例可以看出)任何代碼,但我打算添加它。

那麼,這是做事的正確方法嗎?或者我完全錯過了什麼?

+0

可以存取權限的ActionBar片段裏面,像這樣: '動作條AB = getActivity()getActionBar()' 是有意義的保持,改變動作條對於特定片段代碼中。分段。此外,如果你想從一個片段內部訪問父級活動,那麼按照谷歌的建議並使用接口是明智的。它在這裏解釋得相當不錯: http://developer.android.com/training/basics/fragments/communicating.html – pelotasplus 2013-03-25 10:15:06

回答

0

正如你所知,片段有自己的生命週期,並且你可以在活動生命週期中使用它的事件。

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

// 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(); 

呦可以使用片段交易,以取代他們的一個活動,我想你用同樣的方法,

,我認爲你的arent錯誤的方式,也沒有使用片段而不是使用問題不同的活動。

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

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

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

enter image description here

+0

我使用SlidingMenu,當我從SlidingMenu中選擇一個項目時,我不希望新的活動彈出我希望菜單關閉,新的內容要顯示而不是舊的。它看起來更自然。 – agamov 2013-03-25 10:11:27

+0

所以這是在你的screnario中使用片段的正確方法。 – Talha 2013-03-25 10:53:08