2012-07-29 61 views
1

我有應用程序,它只是一個計時器,在主要活動中有一大堆特殊方法。這很好,沒有問題。現在,我有它的工作,我試圖把它包括在一個更復雜的應用程序,我將通過片段插入計時器在許多地方。瞭解片段活動

我應該在我的片段活動中包含所有特殊方法嗎? IE:

public class Timer_fragment extends android.support.v4.app.Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.timer_frag, container, false); 
    } 
    //SHOULD I insert my special methods here? 
} 

或者我應該將它們包括在我的主體中嗎?

我在問,因爲我已經嘗試了兩種方法,並且片段活動方式給了我java中的錯誤,但是將它們放入我的main中給了我在運行時期間的錯誤。基本上我有一個計時器,作爲獨立應用程序運行良好,但我試圖將其轉換爲片段,以便我可以將其插入到我的應用程序的多個位置。的「特殊方法」

實例: 予取的視圖中的佈局,並根據在計時器輸入的新號碼更新它。這些方法要求視圖在可以使用之前充氣。

注意:我在運行時遇到的錯誤是nullPointerExceptions。

+0

你能否展示一些實際上導致問題的代碼?從你的基本描述來看,這聽起來像你只需要更好地理解片段生命週期,並確保你沒有嘗試訪問尚不可用(或不再可用)的視圖。 – 2012-07-30 00:55:54

+0

是的,但我真正感興趣的是知道一個片段活動是否基本適用於子應用程序。你能回答嗎?在此先感謝 – EGHDK 2012-07-30 01:01:27

+0

換句話說。我在哪裏編寫僅涉及碎片和佈局的方法。在主要活動中還是在片段活動中? – EGHDK 2012-07-30 01:07:41

回答

2

片段背後的想法是它是一個可用於其他活動或者甚至在同一活動中但可以添加或不存在其他片段的活動的可重用部分(即片段)。

例如,在Gmail應用程序中,收件箱中所有電子郵件的列表是一個片段,而電子郵件的實際內容是另一個片段。在橫向模式下的平板電腦上,均顯示。然而,縱向模式的手機將只顯示兩個碎片中的一個。

因此,每個片段應封裝使用該片段所需的所有功能和UI組件。這意味着所有的「特殊」方法,例如膨脹Fragment的視圖XML,都應該在Fragment中發生。

利用片段的活動(或活動)應該只需要使用FragmentManager(或類似的方法)將您的片段添加到活動的佈局。片段的父級活動還應處理片段與其他組件(如其他活動,片段或線程)之間的通信。

+0

爲什麼我無法將活動轉變爲片段? – EGHDK 2012-07-30 02:11:02

+0

要回答這個問題(我猜測它與你的NullPointerExceptions有關),你需要從你的Fragment中發佈任何相關的logcat條目和代碼。 – 2012-07-30 13:55:34