我有一个非常奇怪的问题。我问过我的队友,但是他们说他们不知道为什么会这样。
这是我的主类,其方法返回类型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,所以问题是什么?为什么在外部文件中使用类而不是静态会破坏代码?