FragmentPagerAdapter existiert nur in Android.Support.V4.App (und nicht Android.App)

Ich finde nicht finden FragmentPagerAdapter in Android.App.

Ich möchte nicht das Fragment von Android.Support.V4.App verwenden, da meine Ziel-API 14 und höher ist (Android 4.0 und höher). Also, ich möchte nur einfach von Android.App.Fragments, und da assoziierten Klassen.

Ich habe es nur in Android gefunden.Support.V4.App, aber das reicht nicht für mich b / c Ich versuche, Android.App.Fragment's (nicht Android.Support.V4.App.Fragment's) und dort zu verwenden Verwandte Klassen in Android.App (nicht Android.Support.V4.App), und mein Code nicht kompilieren, wenn ich meine Pager aus FragmentPagerAdapter, wenn es aus der Support-Bibliothek, weil der resultierenden Typ Mismatch zwischen Android.App und Android.Support .V4.App.

So wie bei dem Fall hier kann nicht auf android.app.Fragment geworfen werden , gibt es eine "normale" Pager (PagerAdapter) Klasse, die ich anstelle von FragmentPagerAdapter oder etwas verwenden sollte (genau wie du von normaler Aktivität abgeleitet bist und nicht FragmentActivity, Beim Targeting auf API 11 oder höher).

Hier ist der Beispielcode, mit dem ich arbeite (die FragmentPagerSupport.cs-Datei in der Support4.sln-Lösung aus den MonoDroid-Beispielen unter https://github.com/xamarin/monodroid-samples/tree/master/Support4 ).

Ich habe kommentiert die Zeilen, die auf Android.Support.V4.App referenziert und ersetzt sie mit Code, der auf Android.App verweist. Es gibt keinen FramePagerAdapter außerhalb von Android.Support.V4.App das ich finden konnte, und ich brauche es wirklich).

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); } } } } 

  • Schwimmende Action-Taste Scroll sonderbares Verhalten
  • Warum wird mein Xamarin.Android-Projekt nicht mit Proguard aktiviert: "java.exe" mit Code 1 verlassen
  • Wie registriere ich meine eigene Bewerbungsunterklasse in Xamarin.Android?
  • Zeichnungsfähige Ressource erhalten
  • Android - ListView onItemClick () nicht in 4.1 Jellybean abfeuern
  • Monodroid Google Maps v2 - Die Aufgabe "LinkAssemblies" ist unerwartet fehlgeschlagen
  • MarkerClick funktioniert aber InfoWindowClick öffnet nicht ViewModel
  • Effiziente Übergabe von benutzerdefinierten Objektdaten zwischen Android-Aktivitäten
  • 3 Solutions collect form web for “FragmentPagerAdapter existiert nur in Android.Support.V4.App (und nicht Android.App)”

    Es gibt eine, die in android.support.v13.app.FragmentPagerAdapter , was tun sollte, was Sie es tun möchten. Es ist ein FragmentPagerAdapter für Nicht-Support-Fragmente.

    Android Studio Installation

    Bitte füge folge Gradle Abhängigkeiten hinzu

     dependencies { compile 'com.android.support:support-v13:+' } 

    Ugh, du musst nur den FragmentPagerAdapter aus der V13 Supportbibliothek nutzen

     Android.Support.V13.App.FragmentPagerAdapter 

    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 Vollständigkeit (modifiziertes "Support4" Beispiel von https://github.com/xamarin/monodroid-samples/ ):

     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.Util; using Android.Views; using Android.Widget; using Java.Lang; using Android.Support.V4.View; using Fragment = Android.App.Fragment; namespace Support4 { [Activity (Label = "@string/fragment_pager_support")] [IntentFilter (new[]{Intent.ActionMain}, Categories = new[]{ "mono.support4demo.sample" })] public class FragmentPagerSupport : Activity //public class FragmentPagerSupport : FragmentActivity { const int NUM_ITEMS = 4; protected MyAdapter _pagerAdapter; protected ViewPager _viewPager; protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); SetContentView(Resource.Layout.fragment_pager); List<Fragment> fragments = new List<Fragment>(); // *** MonoDroid 4.2.7 letter case bug *** make's first letter lower. //string typeName = typeof(Fragment1).FullName; string typeName = "support4." + typeof(Fragment1).Name; fragments.Add(Fragment.Instantiate(this, typeName)); fragments.Add(Fragment.Instantiate(this, typeName)); fragments.Add(Fragment.Instantiate(this, typeName)); fragments.Add(Fragment.Instantiate(this, typeName)); //adapter = new MyAdapter(SupportFragmentManager); _pagerAdapter = new MyAdapter(FragmentManager, fragments); _viewPager = FindViewById<ViewPager>(Resource.Id.view_pager); _viewPager.Adapter = _pagerAdapter; } public override bool OnTouchEvent(MotionEvent e) { return base.OnTouchEvent(e); } protected class MyAdapter : Android.Support.V13.App.FragmentPagerAdapter { private List<Fragment> _fragments; public override Java.Lang.Object InstantiateItem(View p0, int p1) { return base.InstantiateItem(p0, p1); } public MyAdapter(Android.App.FragmentManager fm) : base(fm) { } //public MyAdapter(Android.Support.V4.App.FragmentManager fm, List<Android.Support.V4.App.Fragment> fragments) // : base(fm) public MyAdapter(FragmentManager fm, List<Fragment> fragments) : base(fm) { _fragments = fragments; } public override int Count { get { return NUM_ITEMS; } } //public override Android.Support.V4.App.Fragment GetItem(int p0) public override Fragment GetItem(int p0) { return _fragments[p0]; } public override float GetPageWidth(int p0) { //return base.GetPageWidth(p0); //base.GetPageWidth(p0); return (float)(0.5f); } } } //public class Fragment1 : Android.Support.V4.App.Fragment public class Fragment1 : Fragment { int num; private static int _colorIndex = 0; private static Android.Graphics.Color[] _colors = new[] { Android.Graphics.Color.Aqua, Android.Graphics.Color.DarkViolet, Android.Graphics.Color.Coral, Android.Graphics.Color.Bisque}; public Fragment1() { } public Fragment1(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) { View v = inflater.Inflate(Resource.Layout.aaaaa, container, false); TextView tv = v.FindViewById<TextView>(Resource.Id.text); tv.Text = "# " + _colorIndex; tv.SetBackgroundColor(_colors[_colorIndex++]); return v; } public override void OnActivityCreated(Bundle p0) { base.OnActivityCreated(p0); } } } 

     <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2010 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- Top-level content view for the simple fragment sample. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:padding="4dip" android:layout_width="match_parent" android:layout_height="match_parent"> <!--android:gravity="center_horizontal"--> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="700dip" android:layout_height="match_parent" android:layout_weight="1" android:background="#FFCCFFFF"> <!--android:layout_width="match_parent"--> </android.support.v4.view.ViewPager> </LinearLayout> 

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/screen_container" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical|center_horizontal" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/hello_world" android:background="#FF335555"/> </LinearLayout> 

    Füge diese Verschiebung den Gradle-Abhängigkeiten hinzu:

     compile 'com.android.support:support-v13:+' 

    Und benutze android.support.v13.app.FragmentPagerAdapter wie dieses (ich habe einfach das offizielle Demo-Projekt im Android-Studio geändert: Datei → neu → neues Projekt → weiter → nächstes → tabbed-Aktivität → weiter → beenden):

     import android.app.Fragment; import android.app.FragmentManager; import android.support.v13.app.FragmentPagerAdapter; import com.google.android.gms.maps.MapFragment; /** A simple FragmentPagerAdapter that returns a MapFragment and a PreferenceFragment. */ public class MainActivityAdapter extends FragmentPagerAdapter { private MapFragment mapFragment; private PreferencesFragment preferencesFragment; public MainActivityAdapter(FragmentManager fm) { super(fm); mapFragment = MapFragment.newInstance(); preferencesFragment = new PreferencesFragment(); } @Override public int getCount() { return 2; } @Override public Fragment getItem(int position) { switch (position) { case 0: return mapFragment; case 1: return preferencesFragment; default: return null; } } } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.