FragmentPagerAdapter 仅存在于 Android.Support.V4.App(而不是 Android.App) [英] FragmentPagerAdapter Exists Only In Android.Support.V4.App (and not Android.App)

查看:24
本文介绍了FragmentPagerAdapter 仅存在于 Android.Support.V4.App(而不是 Android.App)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 Android.App 中找不到 FragmentPagerAdapter.

I cannot find find FragmentPagerAdapter within Android.App.

我不想使用来自 Android.Support.V4.App 的 Fragment,因为我的目标 API 是14 及更高版本(Android 4.0 及更高版本).所以,我只想使用简单的 Android.App.Fragments,还有相关的类.

I do not want to use the Fragment's from Android.Support.V4.App, as my target API is 14 and higher (Android 4.0 and up). So, I want to just use plain of Android.App.Fragments, and there associated classes.

我只在 Android.Support.V4.App 中找到过,但这还不够对我来说 b/c 我正在尝试使用 Android.App.Fragment 的(不是 Android.Support.V4.App.Fragment 的)和 Android.App 中的相关类(不是 Android.Support.V4.App),我的代码不会如果我从 FragmentPagerAdapter 派生我的寻呼机,如果它来自支持库,则编译,因为 Android.App 和 Android.Support.V4.App 之间的结果类型不匹配.

I only have found it within Android.Support.V4.App, but this doesn't suffice for me b/c I'm trying to use Android.App.Fragment's (not Android.Support.V4.App.Fragment's) and there related classes within Android.App (not Android.Support.V4.App), and my code wont compile if I derive my pager from FragmentPagerAdapter if its from the Support library, because of the resulting type mismatch's between Android.App and Android.Support.V4.App.

就像这里的情况 无法转换为 android.app.Fragment,是否有我应该使用的普通"寻呼机(PagerAdapter)类FragmentPagerAdapter 或其他东西的地方(就像你从正常的活动中派生出来的一样,并且不是 FragmentActivity,当面向 API 11 或更高版本时).

Just as with the case here Cannot be cast to android.app.Fragment, is there a "normal" pager (PagerAdapter) class I should be using in place of FragmentPagerAdapter or something (just like you derive from normal Activity, and not FragmentActivity, when targeting API 11 or higher).

这是我正在使用的示例代码(它是 Support4.sln 解决方案中的 FragmentPagerSupport.cs 文件,来自 https://github.com/xamarin/monodroid-samples/tree/master/Support4).

Here is the sample code I'm working with (its the FragmentPagerSupport.cs file within the Support4.sln solution from the MonoDroid examples found at https://github.com/xamarin/monodroid-samples/tree/master/Support4).

我已经注释掉了引用 Android.Support.V4.App 的行并将它们替换为引用 Android.App 的代码.在 Android.Support.V4.App 之外我找不到 FramePagerAdapter,我真的很需要它).

I've commented out the lines that referenced Android.Support.V4.App and replaced them with code that references Android.App. There is no FramePagerAdapter outside of Android.Support.V4.App that I could find, and I really need it).

谢谢.

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,它应该做你想做的事.它是一个用于非支持片段的 FragmentPagerAdapter.

There is one that is in android.support.v13.app.FragmentPagerAdapter, which should do what you want it to do. It's a FragmentPagerAdapter for non-support fragments.

Android Studio 安装

请添加跟随 Gradle 依赖

Please add follow Gradle dependencies

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

这篇关于FragmentPagerAdapter 仅存在于 Android.Support.V4.App(而不是 Android.App)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆