0

延長していSherlockFragmentActivityます。要素を検査するとthis.getFragmentManager()、次の説明が表示されます。

FragmentManager android.app.Activity.getFragmentManager()

public FragmentManager getFragmentManager () 
Added in API level 11
Return the FragmentManager for interacting with fragments associated with this activity.

これは、API レベル 11 以上でのみ使用できることを意味します。

実際、次のコードでエラーが発生します。

android.app.FragmentManager fragmentManager = this.getFragmentManager();
android.app.FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
DetailsServiceListFragment fragment = new DetailsServiceListFragment();
fragmentTransaction.add(R.id.dettservizio,fragment);

DetailsServiceListFragment拡張する場所SherlockListFragment

エラーは 4 行目にあり、次のように表示されます。

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

これは、DetailsS​​erviceListFragment が Fragment を拡張する必要があるために発生します。しかし、なぜ私は延長できないのSherlockListFragmentですか?

Sherlok プロジェクトに含まれるクラスを使用する場合、どの Fragment を使用する必要がありますか?

4

3 に答える 3

0

getSupportFragmentManager()代わりにメソッドを使用する必要があります。あなたが指摘したように、android.app.*フラグメント関連のクラスはAPI 11+専用です。

android.support.v4.app.FragmentManager fragmentManager = this.getFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
DetailsServiceListFragment fragment = new DetailsServiceListFragment();
fragmentTransaction.add(R.id.dettservizio,fragment);

また、コミットすることを忘れないでくださいFragmentTransaction

fragmentTransaction.commit();

DetailsServiceListFragment extends SherlockListFragmentSherlockListFragmentすでに拡張android.support.v4.app.Fragmentされているので、それで問題ありません。そのままにしておきます。

于 2013-10-16T21:31:05.513 に答える
0

Fragment(ie android.support.v4.app.Fragment) のサポート ライブラリ バージョンを と一緒に使用する必要がありますgetSupporFragmentManager()。必要に応じて、ActionBar の Android 独自のバックポートを使用できるようになりました。

于 2013-10-16T21:31:29.417 に答える