由内部类和外部类引起的类型不匹配 - 为什么?

时间:2013-02-24 01:01:29

标签: java android types inner-classes

我有一个非常奇怪的问题。我问过我的队友,但是他们说他们不知道为什么会这样。

这是我的主类,其方法返回类型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

我不明白,因为单独文件中的类扩展了Fragment,所以问题是什么?为什么在外部文件中使用类而不是静态会破坏代码?

0 个答案:

没有答案