0

私は非常に奇妙な問題を抱えています。コースメイトに聞いてみたのですが、なぜこうなったのか分からないとのことでした。

これは 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 を拡張しているのでよくわかりませんが、何が問題なのですか?静的ではなく外部ファイルにクラスがあるとコードが壊れるのはなぜですか?

4

0 に答える 0