【问题标题】:Android Studio: Error:(30, 24) error: incompatible types: Activity cannot be converted to FragmentAndroid Studio: 错误:(30, 24) 错误: 不兼容的类型: Activity 无法转换为 Fragment
【发布时间】:2017-05-18 18:34:36
【问题描述】:

得到以下错误:

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

我是安卓开发新手。最初代码工作正常。但现在它显示错误。谁能帮我解决这个问题?

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;
        }
    }

【问题讨论】:

  • 你应该使用片段而不是 Tab 的活动。
  • TabMyMatesActivity 应该是一个片段而不是一个活动。改变它。
  • 您无法将菠萝转换为橙子。你同意这个概念吗?
  • 我是 Android 开发新手。最初它工作得很好。现在它显示错误。任何人都可以提供解决方案来解决这个问题。
  • 尝试将您的代码和错误复制粘贴为文本,而不是图像。

标签: android casting incompatibletypeerror


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多