Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Java数组中的继承:为什么这是一种类型不匹配?_Android_Arrays_Inheritance_Android Fragments - Fatal编程技术网

Android Java数组中的继承:为什么这是一种类型不匹配?

Android Java数组中的继承:为什么这是一种类型不匹配?,android,arrays,inheritance,android-fragments,Android,Arrays,Inheritance,Android Fragments,我有一个BaseFragment所谓的排行榜Fragment,它扩展了Fragment: public class LeaderboardFragment extends Fragment 当我在FragmentActivity中定义下一个时,我得到类型不匹配: Fragment[] fragments = new LeaderboardFragment[] {new Fragment1(), new Fragment2(), new Fragment3()}; 这些片段都扩展了排行

我有一个
BaseFragment
所谓的排行榜Fragment,它扩展了
Fragment

public class LeaderboardFragment extends Fragment
当我在
FragmentActivity
中定义下一个时,我得到类型不匹配:

Fragment[] fragments = new LeaderboardFragment[] {new Fragment1(),
    new Fragment2(), new Fragment3()};
这些片段都扩展了排行榜片段。这样的事情应该是可能的,因为它们只是继承了那个超类

编辑 这就是我的碎片活动的样子:

public class LeaderboardTabHost extends FragmentActivity {

ViewPager myViewPager;
Fragment[] fragments = new Fragment[] {new Fragment1(), new Fragment2(), new Fragment3()};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_collection_object);

    MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
    myViewPager = (ViewPager) findViewById(R.id.pager);
    myViewPager.setAdapter(adapter);
    myViewPager.setCurrentItem(1);
}

private class MyPagerAdapter extends FragmentPagerAdapter {

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int index) {
        return fragments[index];
    }

    public int getCount() {
        return 3;
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        // TODO Auto-generated method stub
        return arg0 == ((View) arg1);
    }

    @Override
    public Parcelable saveState() {
        return null;
    }
}

public class Fragment1 extends LeaderboardFragment {

    public Fragment1() {
        super();
        setTag("time");
    }
}

public class Fragment2 extends LeaderboardFragment {

    public Fragment2() {
        super();
        setTag("distance");
    }
}

public class Fragment3 extends LeaderboardFragment {

    public Fragment3() {
        super();
        setTag("speed");
    }
}
}

准确的误差是:

//Type mismatch: Cannot convert from LeaderboardTabhost.Fragment1 to Fragment

我认为那不管用。理论上,如果将片段定义为
Fragment[]
并使用
leadboardfragment[]
对其进行初始化,那么将不属于
leadboardfragment
片段的其他类型添加到该数组中会发生什么

无论如何,我不明白你为什么不能用这个:

Fragment[] fragments = new Fragment[] {new Fragment1(),
new Fragment2(), new Fragment3()};

最后,数组中的对象是扩展
Fragment
类的类的实例。

我已经解决了这个问题

当我瞄准
android.support.v4.app.Fragment
时,我意外地扩展了
android.app.Fragment


我修复了导入,错误消失了。

这样定义数组也会导致类型不匹配。类
Fragment1
Fragment2
Fragment3
extend
Fragment
,对吗?不,如上所述,它们扩展了一个名为
leadboardfragment
的“基类”,扩展了
Fragment
。这意味着它们也扩展了
Fragment
。他们是
侄子
,不是
子女
,而是继承
片段
。无论如何,这很奇怪。我不知道它为什么会抛出该异常。显示
FragmentX
的定义并显示确切的错误消息(多行缩进和所有)。