No puedo encontrar FragmentPagerAdapter en Android.App.
No quiero usar Fragment's de Android.Support.V4.App, ya que mi API objetivo es 14 y superior (Android 4.0 y superior). Entonces, solo quiero usar Android.App.Fragments y sus clases asociadas.
Solo lo he encontrado en Android.Support.V4.App, pero esto no es suficiente para mí porque estoy tratando de usar Android.App.Fragment's (no Android.Support.V4.App.Fragment's) y allí clases relacionadas dentro de Android.App (no Android.Support.V4.App), y mi código no se compilará si obtengo mi localizador de FragmentPagerAdapter si es de la biblioteca Support, debido a la falta de coincidencia de tipos resultante entre Android.App y Android.Support .V4.App.
Al igual que con el caso aquí, no se puede enviar a android.app.Fragment , ¿hay una clase de buscapersonas "normal" (PagerAdapter) que debería usar en lugar de FragmentPagerAdapter o algo así (como se deriva de la actividad normal y no de FragmentActivity, cuando se dirige a API 11 o superior).
Aquí está el código de muestra con el que estoy trabajando (es el archivo FragmentPagerSupport.cs dentro de la solución Support4.sln de los ejemplos de MonoDroid que se encuentran en https://github.com/xamarin/monodroid-samples/tree/master/Support4 ).
He comentado las líneas que hacen referencia a Android.Support.V4.App y las he reemplazado con un código que hace referencia a Android.App. No hay FramePagerAdapter fuera de Android.Support.V4.App que pude encontrar, y realmente lo necesito).
Gracias.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
//using Android.Support.V4.App;
//using Android.Support.V4.View;
namespace 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;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView(Resource.Layout.fragment_pager);
//adapter = new MyAdapter(SupportFragmentManager);
adapter = new MyAdapter(FragmentManager);
pager = FindViewById<ViewPager>(Resource.Id.pager);
pager.Adapter = adapter;
var button = FindViewById<Button>(Resource.Id.goto_first);
button.Click += (sender, e) => {
pager.CurrentItem = 0;
};
button = FindViewById<Button>(Resource.Id.goto_last);
button.Click += (sender, e) => {
pager.CurrentItem = NUM_ITEMS - 1;
};
}
// ?????????????????????????????????????????????????
// - where is FragmentPagerAdapter
// ?????????????????????????????????????????????????
protected class MyAdapter : FragmentPagerAdapter
{
public MyAdapter(FragmentManager fm) : base(fm)
{
}
public override int Count {
get {
return NUM_ITEMS;
}
}
public override Fragment GetItem (int position)
{
return new ArrayListFragment(position);
}
}
protected class ArrayListFragment : ListFragment
{
int num;
public ArrayListFragment()
{
}
public ArrayListFragment(int num)
{
var args = new Bundle();
args.PutInt("num", num);
Arguments = args;
}
public override void OnCreate (Bundle p0)
{
base.OnCreate (p0);
num = Arguments != null ? Arguments.GetInt("num") : 1;
}
public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var v = inflater.Inflate(Resource.Layout.fragment_pager_list, container, false);
var tv = v.FindViewById<TextView>(Resource.Id.text);
tv.Text = "Fragment #" + num;
return v;
}
public override void OnActivityCreated (Bundle p0)
{
base.OnActivityCreated (p0);
ListAdapter = new ArrayAdapter<string>(Activity, Android.Resource.Layout.SimpleListItem1, Cheeses.cheeseStrings);
}
public override void OnListItemClick(ListView l, View v, int position, long id) {
Console.WriteLine ( "Item clicked: " + id);
}
}
}
}
android.support.v13.app.FragmentPagerAdapter
. No estoy seguro si eso te ayudará, pero ...Respuestas:
Hay uno que está dentro
android.support.v13.app.FragmentPagerAdapter
, que debe hacer lo que quieres que haga. Es un FragmentPagerAdapter para fragmentos que no son compatibles.Instalación de Android Studio
Agregue las siguientes dependencias de Gradle
fuente
import android.support.v13.app.FragmentPagerAdapter;
ninguna idea? seguro ya ha agregado compilar 'com.android.support:support-v13:23.1.1' a gradlesupport:support-v13
tiene conflicto consupport:design
en mi casoUgh, solo necesitas usar el FragmentPagerAdapter de la biblioteca de soporte V13
Entonces, todas las demás clases relacionadas con Fragment pueden usarse desde las bibliotecas / espacios de nombres "normales", con la excepción de ViewPager, pero eso no es gran cosa.
Aquí hay una muestra de integridad (ejemplo "Support4" modificado de https://github.com/xamarin/monodroid-samples/ ):
fuente
Agregue esta dependencia a las dependencias de gradle:
Y use de
android.support.v13.app.FragmentPagerAdapter
esta manera (simplemente modifiqué el proyecto de demostración oficial en Android Studio: archivo → nuevo → nuevo proyecto → siguiente → siguiente → actividad con pestañas → siguiente → finalizar):fuente
Según 2019 con AndroidX
fuente
Tuve el mismo problema. Mi solución fue copiar el código de android.support.v4.app.FragmentPagerAdapter, luego cambiar la clase Fragment importada a android.app.Fragment. Luego haga otras adaptaciones menores para eliminar todos los errores. Para mi sorpresa, funciona perfectamente. En mi opinión, esto es más simple que agregar una biblioteca de soporte que realmente no necesita.
fuente