ฉันไม่พบ find FragmentPagerAdapter ภายใน Android.App
ฉันไม่ต้องการใช้ Fragment จาก Android.Support.V4.App เนื่องจาก API เป้าหมายของฉันคือ 14 และสูงกว่า (Android 4.0 ขึ้นไป) ดังนั้นฉันต้องการเพียงแค่ใช้ธรรมดาของ Android.App.Fragments และมีชั้นเรียนที่เกี่ยวข้อง
ฉันพบเฉพาะภายใน Android.Support.V4.App แต่นี่ไม่พอสำหรับฉัน b / c ฉันพยายามใช้ Android.App.Fragment's (ไม่ใช่ Android.Support.V4.App.Fragment's) และมี คลาสที่เกี่ยวข้องภายใน Android.App (ไม่ใช่ Android.Support.V4.App) และรหัสของฉันจะไม่รวบรวมถ้าฉันได้รับเพจเจอร์ของฉันจาก FragmentPagerAdapter ถ้ามันมาจากห้องสมุดการสนับสนุนเพราะประเภทไม่ตรงกันระหว่าง Android.App และ Android.Support .V4.App
เช่นเดียวกับกรณีที่นี่ไม่สามารถส่งไปยัง android.app.Fragmentมีคลาส pager (PagerAdapter) "ปกติ" ที่ฉันควรใช้แทน FragmentPagerAdapter หรือบางอย่าง (เหมือนที่คุณได้รับจากกิจกรรมปกติไม่ใช่ FragmentActivity เมื่อกำหนดเป้าหมาย API 11 หรือสูงกว่า)
นี่คือตัวอย่างโค้ดที่ฉันใช้งาน (ไฟล์ FragmentPagerSupport.cs ภายในโซลูชัน Support4.sln จากตัวอย่าง MonoDroid พบได้ที่https://github.com/xamarin/monodroid-samples/tree/master/Support4 )
ฉันได้แสดงความคิดเห็นบรรทัดที่อ้างอิง Android.Support.V4.App และแทนที่ด้วยรหัสที่อ้างอิง Android.App ไม่มี FramePagerAdapter ด้านนอกของ Android.Support.V4.App ที่ฉันสามารถหาได้และฉันต้องการมันจริงๆ)
ขอบคุณ
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
มีอยู่คนหนึ่งที่อยู่ใน ไม่แน่ใจว่าจะช่วยคุณได้หรือไม่ แต่ ...