私は非常に奇妙な問題を抱えています。コースメイトに聞いてみたのですが、なぜこうなったのか分からないとのことでした。
これは 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 を拡張しているのでよくわかりませんが、何が問題なのですか?静的ではなく外部ファイルにクラスがあるとコードが壊れるのはなぜですか?