10

リスト フラグメント (v4 サポート ライブラリのインポート、ビルド ターゲットは 2.3.3 api 11) があり、ターゲットが 3.0 でライブラリを使用しなかったときに正常に動作していたコードに次の問題があります。

Fragment frag1 = new ExampleFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.contentframe, frag1);
ft.commit();

今、コンパイルエラーが発生しています

"Type mismatch: cannot convert from ExampleFragment to Fragment"

そして、「フラグメント」をExampleFragmentに変更するように指示されます(例)

ExamplesFragment frag1 = new ExamplesFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.contentframe, frag1);
ft.commit();

次に、ft.replace コマンドにエラーがあるという問題があります。

The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, Fragment_PVAnn)

そして、最初の行の ExamplesFragment を Fragment だけに戻すように指示されるので、円はぐるぐる回ります

4

2 に答える 2

27

使用する必要があります

getActivity().getSupportFragmentManager()

それでも問題が解決しない場合は、Activity extends FragmentActivity.

それでも問題が解決しない場合は、

  1. すべてのインポートを削除し、
  2. Ctrl+ Shift+で再インポートしO
  3. support.v4.*名前が衝突するたびに、 ではなく からインポートするようにしてくださいandroid.*
于 2012-06-26T13:32:16.063 に答える
2

拡張するときは、パッケージ空間にある を拡張Fragmentしていることを確認する必要があります。、などのインポートを確認し、パッケージ名に .v4 なしでインポートされている場合は、間違っています。 Fragmentv4FragmentFragmentActivity

また、プロジェクトの Android ライブラリを 4.0.x ではなく 2.3 に設定すると、間違ったクラスを使用しているかどうかがすぐにわかります。これは、v4 クラスを使用して修正できるコンパイル エラーが発生するためです。 android サポート jar から (プロジェクトにも含まれていることを願っています)

于 2012-06-26T13:32:47.143 に答える