Je ne peux pas trouver FragmentPagerAdapter dans Android.App.
Je ne veux pas utiliser les fragments de Android.Support.V4.App, car mon API cible est de 14 et plus (Android 4.0 et plus). Ainsi, je veux juste utiliser les fragments standard de Android.App et leurs classes associées.
Je l'ai seulement trouvé dans Android.Support.V4.App, mais cela ne me suffit pas car j'essaie d'utiliser les Fragments Android.App (et non les Fragments Android.Support.V4.App) ainsi que leurs classes associées dans Android.App (et non pas dans Android.Support.V4.App), et mon code ne se compilera pas si je dérive mon pager de FragmentPagerAdapter s'il provient de la bibliothèque de support, en raison d'une incompatibilité de type entre Android.App et Android.Support.V4.App.
Exactement comme dans ce cas ici Cannot be cast to android.app.Fragment, y a-t-il une classe "normale" de pager (PagerAdapter) que je devrais utiliser à la place de FragmentPagerAdapter ou quelque chose du genre (comme vous dérivez d'une Activity normale et non d'une FragmentActivity lorsque vous ciblez l'API 11 ou plus).
Voici le code d'exemple sur lequel je travaille (c'est le fichier FragmentPagerSupport.cs dans la solution Support4.sln des exemples MonoDroid trouvés sur https://github.com/xamarin/monodroid-samples/tree/master/Support4).
J'ai commenté les lignes qui référençaient Android.Support.V4.App et les ai remplacées par du code qui référence Android.App. Je n'ai trouvé aucun FramePagerAdapter en dehors de Android.Support.V4.App et j'en ai vraiment besoin.
Merci.
utilise System;
utilise System.Collections.Generic;
utilise System.Linq;
utilise System.Text;
utilise Android.App;
utilise Android.Content;
utilise Android.OS;
utilise Android.Runtime;
utilise Android.Views;
utilise Android.Widget;
//utilise Android.Support.V4.App;
//utilise Android.Support.V4.View;
espace de noms Support4
{
[Activity (Label = "@string/fragment_pager_support")]
[IntentFilter (new[]{Intent.ActionMain}, Categories = new[]{ "mono.support4demo.sample" })]
//public class FragmentPagerSupport : FragmentActivity
public class FragmentPagerSupport : Activity
{
const int NUM_ITEMS = 10;
MyAdapter adapter;
ViewPager pager;
protégé remplacement de void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView(Resource.Layout.fragment_pager);
//adapter = new MyAdapter(SupportFragmentManager);
adapter = new MyAdapter(FragmentManager);
pager = FindViewById(Resource.Id.pager);
pager.Adapter = adapter;
var button = FindViewById(Resource.Id.goto_first);
button.Click += (sender, e) => {
pager.CurrentItem = 0;
};
button = FindViewById
5 votes
Il y en a un qui est dans
android.support.v13.app.FragmentPagerAdapter
. Pas sûr si cela vous aidera, mais...0 votes
PearsonArtPhoto Je ne suis pas sûr car il n'y a pas d'espace de noms Android.Support.V13.View (en MonoDroid en tout cas). Je préférerais ne pas utiliser du tout la bibliothèque de support, mais je ne pense pas que ce soit possible pour le moment.
0 votes
Il semble que ViewPager existe uniquement dans la bibliothèque de support également...
0 votes
développeur.android.com/reference/android/support/v4/view/… La section Présentation de la classe résume assez bien ce problème - "Notez que cette classe est actuellement en phase de conception et de développement précoce. L'API est susceptible de changer dans les futures mises à jour de la bibliothèque de compatibilité, ce qui nécessitera des modifications du code source des applications lorsqu'elles seront compilées avec la nouvelle version."
0 votes
Un autre extrait de la documentation developer.android.com/tools/extras/support-library.html "La bibliothèque de support pour v4 fournit un accès à plusieurs classes introduites avec Android 3.0 et au-delà, ainsi qu'à certaines versions mises à jour de classes existantes, et même à certaines API qui n'existent actuellement pas dans la plate-forme Android". Cependant, pourquoi laisser une telle partie importante de l'API des fragments exclusivement dans la bibliothèque de support, alors que le reste existe en dehors ? Peut-être une simple erreur de jugement ?
0 votes
@PearsonArtPhoto Oui, c'est celui qui a en fait résolu le problème. Merci de l'avoir suggéré.
0 votes
@SamusArin Oui. Si votre minSdk est supérieur à 11, vous devriez utiliser android.support.v13 .