Java 内部类与外部类导致的类型不匹配-为什么?
我有一个很奇怪的问题。我问过我的同学,但他们说他们不知道为什么会这样 这是我的主类,带有返回类型Fragment的方法: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:
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
。