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