Android Studio:错误:(30,24)错误:不兼容的类型:Activity无法转换为Fragment

时间:2017-01-04 12:53:23

标签: android casting incompatibletypeerror

获得以下错误:

  

"错误:(30,24)错误:不兼容的类型:TabMyMatesActivity无法转换为Fragment"。

enter image description here

我是Android开发的新手。最初代码工作正常。但现在它显示错误。任何人都可以帮我解决这个问题吗?

package com.example.mmp.myapplication;

    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentStatePagerAdapter;

    //Extending FragmentStatePagerAdapter
    public class Pager extends FragmentStatePagerAdapter {

        //integer to count number of tabs
        int tabCount;

        //Constructor to the class
        public Pager(FragmentManager fm, int tabCount) {
            super(fm);
            //Initializing tab count
            this.tabCount= tabCount;
        }

        //Overriding method getItem
        @Override
        public Fragment getItem(int position) {
            //Returning the current tabs
            switch (position) {
                case 0:
                    TabMyMatesActivity tab1 = new TabMyMatesActivity();
                    return tab1;
                case 1:
                    TabRequestsActivity tab2 = new TabRequestsActivity();
                    return tab2;
                case 2:
                    TabSuggestionsActivity tab3 = new TabSuggestionsActivity();
                    return tab3;
                case 3:
                    TabContactsActivity tab4 = new TabContactsActivity();
                    return tab4;
                default:
                    return null;
            }
        }

        //Overriden method getCount to get the number of tabs
        @Override
        public int getCount() {
            return tabCount;
        }
    }

1 个答案:

答案 0 :(得分:0)

Activity不是Fragment。这就是转换失败的原因(强制转换是将一种对象类型的引用转换为另一种类型时)。

我建议您将视图寻呼机中所需的“屏幕”从活动转换为片段。如果您仍希望在某些情况下将它们用作活动,则应创建单个活动,并且每个活动都应包含其中一个片段。这种方式将允许您重用碎片。

例如,您的代码应该看起来像这样:

    @Override
    public Fragment getItem(int position) {
        //Returning the current tabs
        switch (position) {
            case 0:
                return new TabMyMatesFragment();
            ...

我建议您在继续之前阅读fragment documentation,以便更好地理解这一点。