Ich kann FragmentPagerAdapter in Android.App nicht finden.
Ich möchte die Fragmente von Android.Support.V4.App nicht verwenden, da meine Ziel-API 14 und höher ist (Android 4.0 und höher). Ich möchte also einfach nur Android.App.Fragments und die dazugehörigen Klassen verwenden.
Ich habe es nur in Android.Support.V4.App gefunden, aber das reicht mir nicht aus. B / c Ich versuche, Android.App.Fragments (nicht Android.Support.V4.App.Fragments) und dort zu verwenden Verwandte Klassen in Android.App (nicht Android.Support.V4.App) und mein Code werden nicht kompiliert, wenn ich meinen Pager von FragmentPagerAdapter ableite, wenn er aus der Support-Bibliothek stammt, da sich der Typ zwischen Android.App und Android.Support nicht übereinstimmt .V4.App.
Genau wie in diesem Fall Kann nicht in android.app.Fragment umgewandelt werden. Gibt es eine "normale" Pager-Klasse (PagerAdapter), die ich anstelle von FragmentPagerAdapter oder etwas anderem verwenden sollte (genau wie Sie es von normaler Aktivität ableiten und nicht von FragmentActivity)? beim Targeting von API 11 oder höher).
Hier ist der Beispielcode, mit dem ich arbeite (die Datei FragmentPagerSupport.cs in der Support4.sln-Lösung aus den MonoDroid-Beispielen unter https://github.com/xamarin/monodroid-samples/tree/master/Support4 ).
Ich habe die Zeilen, die auf Android.Support.V4.App verweisen, auskommentiert und durch Code ersetzt, der auf Android.App verweist. Es gibt keinen FramePagerAdapter außerhalb von Android.Support.V4.App, den ich finden konnte und den ich wirklich brauche.
Vielen Dank.
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
. Ich bin mir nicht sicher, ob das dir helfen wird, aber ...Antworten:
Es gibt eine, die in ist
android.support.v13.app.FragmentPagerAdapter
, die tun sollte, was Sie wollen, dass es tut. Es ist ein FragmentPagerAdapter für nicht unterstützte Fragmente.Installation von Android Studio
Bitte fügen Sie folgende Gradle-Abhängigkeiten hinzu
quelle
import android.support.v13.app.FragmentPagerAdapter;
keine idee auf? sicher haben bereits compile 'com.android.support:support-v13:23.1.1' zu gradle hinzugefügtsupport:support-v13
hat Konflikt mitsupport:design
in meinem FallSie müssen nur den FragmentPagerAdapter aus der V13-Unterstützungsbibliothek verwenden
Dann können alle anderen Fragment-bezogenen Klassen aus den "normalen" Bibliotheken / Namespaces verwendet werden, mit Ausnahme von ViewPager, aber das ist keine große Sache.
Hier ist ein Beispiel für die Vollständigkeit (modifiziertes "Support4" -Beispiel von https://github.com/xamarin/monodroid-samples/ ):
quelle
Fügen Sie diese Abhängigkeit zu den Gradle-Abhängigkeiten hinzu:
Und verwenden Sie dies
android.support.v13.app.FragmentPagerAdapter
wie folgt (ich habe einfach das offizielle Demo-Projekt in Android Studio geändert: Datei → Neu → Neues Projekt → Weiter → Weiter → Aktivität mit Registerkarten → Weiter → Fertig stellen):quelle
Stand 2019 mit AndroidX
quelle
Hatte das gleiche Problem. Meine Lösung bestand darin, den Code von android.support.v4.app.FragmentPagerAdapter zu kopieren und dann die importierte Fragment-Klasse in android.app.Fragment zu ändern. Nehmen Sie anschließend weitere kleinere Anpassungen vor, um alle Fehler zu beseitigen. Zu meiner Überraschung funktioniert es perfekt. IMO ist dies einfacher als das Hinzufügen einer Support-Bibliothek, die Sie nicht wirklich benötigen.
quelle