Android.App içinde FragmentPagerAdapter bulmak bulamıyorum.
Hedef API'm 14 ve üstü (Android 4.0 ve üstü) olduğu için Android.Support.V4.App'tan Fragment'ları kullanmak istemiyorum. Yani, sadece Android.App.Fragments ovasını kullanmak istiyorum ve ilgili sınıflar var.
Ben sadece Android.Support.V4.App içinde buldum, ama bu benim için yeterli değil b / c Android.App.Fragment's (Android.Support.V4.App.Fragment's) kullanmaya çalışıyorum ve orada Android.App (Android.Support.V4.App değil) ile ilgili sınıflar ve Android.App ve Android.Support arasında oluşan tür uyuşmazlığı nedeniyle, çağrı cihazımı Destek kütüphanesinden ise FragmentPagerAdapter'den türetirsem kodum derlenmeyecek. .V4.App.
Tıpkı burada olduğu gibi android.app.Fragment'a yayınlanamaz , FragmentPagerAdapter veya bir şey yerine kullanmanız gereken "normal" çağrı cihazı (PagerAdapter) sınıfı var (tıpkı normal Aktiviteden türettiğiniz gibi, FragmentActivity değil, API 11 veya üzerini hedeflerken).
İşte birlikte çalıştığım örnek kod ( https://github.com/xamarin/monodroid-samples/tree/master/Support4 adresinde bulunan MonoDroid örneklerinden Support4.sln çözümü içindeki FragmentPagerSupport.cs dosyası ).
Android.Support.V4.App'a başvuran satırları yorumladım ve bunları Android.App'a başvuran kodla değiştirdim. Android.Support.V4.App dışında bulabildiğim hiçbir FramePagerAdapter yok ve gerçekten ihtiyacım var).
Teşekkürler.
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
. Bunun size yardımcı olup olmayacağından emin değilim, ama ...