【问题标题】:Type mismatch: cannot convert from ListFragment to Fragment类型不匹配:无法从 ListFragment 转换为 Fragment
【发布时间】:2015-04-15 17:26:09
【问题描述】:

我有一个TabsPagerAdapter 类,如下所示。 FirstFragment、SecondFragment 和 ThirdFragment 类都扩展了Fragment,一切都很好。 然后我将 SecondFragment 更改为扩展 ListFragment,现在出现编译错误:
类型不匹配:无法从 SecondFragment 转换为 Fragment

ListFragment 扩展了Fragment,所以在我看来。这应该不是问题。
我该怎么办?

SecondFragment 中的导入为:

import android.app.ListFragment;

类:

public class TabsPagerAdapter extends FragmentPagerAdapter {

    private Context mContext;

    public TabsPagerAdapter(FragmentManager fragmentManager, Context context) {
        super(fragmentManager);
        mContext = context;
    }

    @Override
    public Fragment getItem(int index) {

        Fragment returnFragment = null;

        switch (index) {
        case 0:
            returnFragment = new FirstFragment(mContext);
            break;
        case 1:
            returnFragment=  new SecondFragment(mContext);
            break;
        case 2:
            returnFragment = new ThirdFragment(mContext);
            break;
        }

        return returnFragment;
    }

    @Override
    public int getCount() {
        // get item count - equal to number of tabs
        return 3;
    }
}

【问题讨论】:

  • 检查导入。可能您导入了错误的 ListFragment。片段也应该只有空的构造函数
  • 添加了更多信息以阐明 ListFragment 类
  • 现在检查你在TabsPagerAdapter中导入了哪个Fragment
  • 就是这样。这是一个 ...support.v4 ...。所以发布一个关于检查正确的片段类(支持与否)的效果的答案,我会接受。

标签: android android-fragments


【解决方案1】:

此问题通常是由于不同类中的导入不匹配造成的。您可能在一个类中有本机 Fragment,而在另一个类中有来自支持库的一个。修复导入,它将起作用。 检查进口。还要删除在 Fragment 子类中接受参数的构造函数。系统需要一个公共的空构造函数(又名默认构造函数)。如果需要上下文,可以使用getActivity()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2016-03-13
    • 2014-02-12
    • 2014-04-16
    • 2017-12-31
    • 1970-01-01
    • 2015-11-18
    相关资源
    最近更新 更多