Xamarin,无法将片段转换为V4.App.Fragment

时间:2017-11-18 19:46:44

标签: android xamarin

对于Xamarin来说,我是一个新人,我遇到了一个无论我怎样尝试都无法解决的问题 这是我一直得到的错误消息“无法将类型'Fragment1'隐式转换为'andriod.support.V4.App.Fragment

这是我的MainActivity

public class MainActivity : AppCompatActivity
{
    int count = 1;
    PagerSlidingTabStrip _tabs;
    ViewPager _pager;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SetContentView(Resource.Layout.Main);

        _pager = FindViewById<ViewPager>(Resource.Id.pager);
        _tabs = FindViewById<PagerSlidingTabStrip>(Resource.Id.tabs);
        _pager.PageMargin = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 4, Resources.DisplayMetrics);
        _pager.CurrentItem = 0;

        string[] titles = new string[]
            {
                "Fragment1",
                "Fragment2"
            };

        var adapter = new PagerAdapter(SupportFragmentManager, titles);
        _pager.Adapter = adapter;
        _pager.OffscreenPageLimit = titles.Length;
        _tabs.SetViewPager(_pager);
    }
}

这是我的pagerAdapter代码

public class PagerAdapter:FragmentPagerAdapter
{
    private string[] Titles;

    public PagerAdapter(FragmentManager fm, string[] titles)
        : base(fm)
    {
        Titles = titles;
    }

    public override ICharSequence GetPageTitleFormatted(int position)
    {

        return new Java.Lang.String(Titles[position]);
    }

    public override int Count
    {
        get { return Titles.Length; }
    }

    public override Fragment GetItem(int position)
    {
        switch (position)
        {
            case 0:
                return new Fragment1();
            case 1:
                return new Fragment2();
            case 2:
            default:
                return new Fragment1();
        }
    }
}

这是我的片段

public class Fragment1 : Fragment
{
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        base.OnCreateView(inflater, container, savedInstanceState);

        var view = inflater.Inflate(Resource.Layout.Fragment1Layout, null);

        return view;
    }
}

感谢任何帮助

2 个答案:

答案 0 :(得分:0)

我对Xamarin并不熟悉,但我最近一直在处理片段,并多次遇到过这个问题。我发现,有时在我初始化片段时,它使用的是[Produces("application/json")],而不是使用android.app.Fragment

因此,无论您初始化片段(再次不熟悉Xamarin),请确保使用android.support.v4.app.Fragment。希望这有帮助!

答案 1 :(得分:0)

该错误意味着您继承自Android.App.Fragment而不是Android.Support.V4.App.Fragment

您可以使用上述解决方案,也可以使用此清洁声明using Fragment = Android.Support.V4.App.Fragment;。在命名空间声明之前,将它放在using语句之前或之后。