Java 内部类与外部类导致的类型不匹配-为什么?

Java 内部类与外部类导致的类型不匹配-为什么?,java,android,types,inner-classes,Java,Android,Types,Inner Classes,我有一个很奇怪的问题。我问过我的同学,但他们说他们不知道为什么会这样 这是我的主类,带有返回类型Fragment的方法: public class MainActivity extends FragmentActivity implements ActionBar.TabListener { //.... public Fragment getItem(int position) { switch(position){ case 0:

我有一个很奇怪的问题。我问过我的同学,但他们说他们不知道为什么会这样

这是我的主类,带有返回类型Fragment的方法:

public class MainActivity extends FragmentActivity implements
        ActionBar.TabListener {
//....
public Fragment getItem(int position) {
        switch(position){
        case 0:
            return new AccelerometerMonitorFragment();
        }
        return null;
    }
//...
}
现在,如果我将类“AccelerometerMonitorFragment”作为内部类放在我的主类中:

public static class AccelerometerMonitorFragment  extends Fragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
            //do something
            return null;
        }

}
这将很好地工作,没有错误。但为了清洁起见,我想把它单独归档

因此,我创建了一个单独的类文件,删除了内部类,并尝试使用它

package com.example.actrecognition;
//imports...
public class AccelerometerMonitorFragment  extends Fragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
        // do something
        return null;
    }

}
但是我得到了这个错误: 类型不匹配:无法从AccelerometerMonitorFragment转换为Fragment


我不明白,因为单独文件中的类扩展了片段,所以问题出在哪里?为什么将类放在外部文件而不是静态文件中会破坏代码?

这一次,实际上提供了导入。听起来好像一个类在使用支持片段导入,而另一个类在使用常规的。谢谢你,我现在觉得自己很愚蠢。不要觉得自己很愚蠢,只是不要盲目地相信IDE可以处理所有的脏活(这是我们程序员应该做的)。@moa没问题,这是你应该经常注意的事情之一。如果要使用支持片段,还可以将您的活动声明为
FragmentActivity