0

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

这是我的主类,其方法返回片段类型:

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,所以有什么问题?为什么将类放在外部文件中而不是静态的会破坏代码?

4

0 回答 0