2012-08-17 2 views
0

J'ai 5 pages de xml qui sont assez complexes. Je veux mettre les 5 pages dans un ViewPager. Tous les échantillons que je peux trouver mettent simplement le contenu identique dans chaque page par l'intermédiaire du code. Je veux définir de manière déclarative le xml dans le viewpager comme le xml collé ci-dessous. Mais cela ne fonctionne pas - l'application s'arrête avec ce fichier XML.Définition de fragments dans ViewPager de manière déclarative

Si je ne peux pas le définir de manière déclarative, puis-je charger des pages xml individuelles dans le viewpager? Je ne peux trouver aucun exemple qui le fasse. merci, Gary Blakely

<?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>     

Répondre

0

Si je suis, vous voulez déclarer tout en XML et éviter toute initialisation de programmation à partir de votre activité contenant ViewPager. La seule façon de le faire serait de définir 3 classes de fragments différentes qui font référence à 3 mises en page xml différentes. Vous pouvez ensuite les intégrer dans votre xml ci-dessus, en remplaçant chaque élément <Fragment> par <FragmentX><FragmentY><FragmentZ> etc. Personnellement, je préfère écrire 3 mises en page xml et créer une implémentation de fragment unique qui prend un seul argument int pour désigner la mise en page à charger, puis faire la petite quantité d'initialisation programmatique nécessaire pour faire fonctionner une telle solution. Le raisonnement étant qu'il y a moins de code dupliqué.

EDIT: Une autre approche qui pourrait répondre plus pleinement vos besoins est de remplacer vos <Fragment> balises avec <Layout> balises et leur donner ids. Ensuite, dans votre code d'activité, stockez les références, supprimez-les de la vue dans onCreate() et enfin ajoutez chacune des références stockées dans des instances de Fragment créées par programme que vous ajoutez ensuite à votre ViewPager. Très moche, mais c'est la seule façon que je connaisse pour définir de manière déclarative tout en XML. Vous aurez toujours le problème que ce n'est pas clair à partir du XML que ces éléments sont imbriqués dans un ViewPager donc personnellement, je ne vois pas le point. ListView et ListFragment fonctionnent avec le même type d'association implicite, même si ce n'est pas sans précédent.

+0

C'était un mauvais travail de collage de code - que xml était dans un viewpager. J'ai fini par gonfler les différents fichiers XML dans le code. Je suis nouveau sur Android et habitué à XAML où nous pouvons faire n'importe quoi de façon déclarative. –

Questions connexes