簡體   English   中英

如何正確使用Android中的碎片

[英]How to use Fragments in Android properly

我回答了一個問題:

替換碎片不起作用/我是否以正確的方式執行此操作?

因為我很難將整個概念包裹起來。 過去的Google I / O視頻也有所幫助,但我仍然沒有理由使用片段。 我再次遇到了我的問題,通過更多的搜索和Google I / O 2013視頻,我又遇到了另一個問題。 在開始賞金以獲得關於此主題的更專家意見之后,我被引導使用FrameLayouts,但在此I / O 13視頻中19:05進入視頻顯示<fragment> 有人可以澄清我的任何不滿或誤解嗎?

我使用<fragment>還是<frameLayout> 如果你看看我原來的問題,知道我來自哪里,可以獲得獎勵積分。

我在這里看到兩個單獨的問題; (1)什么是<fragment>元素? (2)我(意思是你)通過使用FrameLayout以最好的方式做我在上一個問題中嘗試做的事情嗎?

我會盡力回答這兩個問題。

<fragment> XML標簽只是實現片段的另一種方式。 作為復習, Fragment就像是活動的一部分。 然而,它是一個獨立的類,回顧片段文檔 ,因為Fragment是模塊化的,所有片段必須存放在單獨的FragmentActivity 將此視為FragmentActivity作為容器。 通過將Fragment加載到FragmentActivityFragmentActivity提供了Fragment類本身無法訪問的其他有價值的函數。 它還為您提供動態交換片段的機會,從而提供更靈活的用戶體驗。

如何將Fragment加載到其包含的FragmentActivity取決於您要嘗試的內容。 一種方法是使用<fragment>標簽。 使用這種方法,不是像在前面的問題中那樣在活動java代碼中聲明Fragment然后使用FragmentTransaction加載它,而是通過包含FragmentActivity的XML布局加載Fragment類。

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"         
    android:orientation="horizontal"     
    android:layout_width="fill_parent"     
    android:layout_height="fill_parent">    


    <fragment 
        android:name="com.example.android.fragments.HeadlinesFragment"                 
        android:id="@+id/headlines_fragment"               
        android:layout_weight="1"               
        android:layout_width="0dp"               
        android:layout_height="match_parent" />      

</LinearLayout> 

您可以在Android文檔中看到示例中聲明的片段。 然后,當onCreate調用setContentView()時, FragmentActivtyFragmentActivty加載。

public class MainActivity extends FragmentActivity {     
    @Override     
    public void onCreate(Bundle savedInstanceState) {         
    super.onCreate(savedInstanceState);         
    setContentView(R.layout.news_articles);     
    } 
}

顯示片段的另一種方式就像您在前面的示例中所做的那樣。 使用FragmentManager您可以創建Fragment類的新實例,並在java代碼中以編程方式加載它。

那么哪種技術有意義呢? 作為android docs demonstraits的例子,當你使用固定片段時,XML片段方法是有意義的,即你不是動態地交換片段。 這是因為您無法像在java代碼中那樣編輯動態創建的XML布局。 另外,從我所知道的,使用XML方法將片段更像是用於不同控制的布局元素。 在android示例中,他們使用XML方法在平板電腦上並排顯示2個fragmens。 通過控制片段更像布局元素,例如具有調整layout_weight的能力,您可以為此目的獲得更好的結果。

但是,如果您正在設計一個高度動態的用戶體驗,例如使用ViewPager或其他一些片段將定期輪換的功能,那么使用單獨的Fragment類並在必要時替換這些Fragments更有意義。

基於您之前的問題以及動態交換片段的需要,我認為您為該實現做出了正確的選擇。

暫無
暫無

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

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