Android.App에서 FragmentPagerAdapter를 찾을 수 없습니다.
대상 API가 14 이상 (Android 4.0 이상)이므로 Android.Support.V4.App의 Fragment를 사용하고 싶지 않습니다. 그래서 나는 평범한 Android.App.Fragments와 관련 클래스를 사용하고 싶습니다.
나는 Android.Support.V4.App 내에서만 발견했지만 이것이 안드로이드에 적합하지 않습니다 .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로 캐스트 할 수없는 것처럼 FragmentPagerAdapter 대신 사용해야하는 "정상"페이저 (PagerAdapter) 클래스가 있습니까 (FragmentActivity가 아닌 일반 활동에서 파생 된 것처럼) API 11 이상을 타겟팅 할 때).
여기 내가 작업하고있는 샘플 코드가 있습니다 ( https://github.com/xamarin/monodroid-samples/tree/master/Support4에 있는 MonoDroid 예제의 Support4.sln 솔루션에있는 FragmentPagerSupport.cs 파일 ).
Android.Support.V4.App을 참조하는 행을 주석 처리하고 Android.App을 참조하는 코드로 대체했습니다. Android.Support.V4.App 외부에 내가 찾을 수있는 FramePagerAdapter가 없으며 실제로 필요합니다).
감사.
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
. 확실하지가 당신을 도울하지만 있을지 ...