2012-08-17 97 views
0

聲明的方式定義片段我有一個相當複雜的XML的5個獨特的網頁。我想把5頁放在ViewPager中。我可以找到的所有樣本都通過代碼簡單地在每個頁面中放置相同的內容。我想聲明性地在viewpager中定義xml,如下面粘貼的xml。但是這不起作用 - 應用程序停止這個XML。內ViewPager

如果我不能以聲明方式定義它,那麼我可以加載單獨的XML頁面進入viewpager?我找不到這樣做的例子。 感謝, 加里·布萊克利

<?xml version="1.0" encoding="utf-8"?> 

<fragment > 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
    <ImageView android:layout_width="match_parent" 
     android:layout_height="match_parent" android:id="@+id/imageView1" 
     android:src="@drawable/flashright" android:adjustViewBounds="true" android:scaleType="fitXY"> 
    </ImageView> 
    </LinearLayout>  
</fragment> 

<fragment > 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
    <ImageView android:layout_width="match_parent" 
     android:layout_height="match_parent" android:id="@+id/imageView1" 
     android:src="@drawable/flashleft" android:adjustViewBounds="true" android:scaleType="fitXY"> 
    </ImageView> 
    </LinearLayout>    
</fragment>     

回答

0

如果我跟着,要聲明的XML的一切,並避免含有ViewPager您的活動中的任何程序初始化。我能想到的唯一方法就是定義3個不同的Fragment類,它們引用3種不同的xml佈局。然後,您可以將它們嵌入在你上面的XML,與<FragmentX><FragmentY><FragmentZ>替換每個<Fragment>元素等就個人而言,我寧願寫3個XML佈局和創建一個單一的片段實現,需要一個int參數指定要加載的佈局,然後做少量的程序化初始化來完成這樣的解決方案。理由是有更少的重複代碼。

編輯: 另一種方法可能會更充分地滿足你的要求是<Layout>代碼替換<Fragment>標籤,給他們的ID。然後在你的活動代碼,存儲裁判對他們來說,從視圖中的onCreate刪除(),最後添加的每個存儲引用爲碎片的程序創建的實例,您再添加到您的ViewPager。非常醜陋,但這是我知道的唯一方法來聲明性地定義XML中的所有內容。您仍然會遇到這樣的問題,即從XML中不清楚這些元素是嵌套在ViewPager中的,因此我個人並沒有看到這一點。 ListView和ListFragment以相同類型的隱式關聯進行操作,儘管它並不是前所未有的。

+0

這是一個糟糕的代碼粘貼工作 - 該XML是一個viewpager內。我結束了代碼中的各種XML文件的膨脹。我是Android新手,習慣於XAML,我們可以通過聲明來做任何事情。 – 2012-08-17 19:54:20