0

私は最初の Android アプリに取り組んでいるので、これが簡単な質問である場合はご容赦ください。アプリには現在 5 つのタブ (フラグメントを使用して作成) があり、現在、最初のタブに ListFragment を設定しようとしています。

私の MainActivity クラスには、次のコードがあります。

public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    if (tab.getPosition() == 0) {
        TopRatedListFragment topRatedListFragment = new TopRatedListFragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.container, topRatedListFragment).commit();
    } else {
        Fragment fragment = new DummySectionFragment();
        Bundle args = new Bundle();
        args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, tab.getPosition() + 1);
        fragment.setArguments(args);
        getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
    }

これで、「DummySectionFragment」で問題なく動作します。しかし、私の TopRatedListFragment は Fragment だけでなく ListFragment を拡張するため、上記のコードで問題が発生しています。

この線:

getSupportFragmentManager().beginTransaction().replace(R.id.container, topRatedListFragment).commit();

エラーを描画し、.replace メソッドが topRatedListedFragment 引数を好まないと言っているのは、それが ListFragment であり、通常の Fragment ではないためです。

これを修正するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

ほとんどの場合、インポートやクラス定義が台無しになっています。

FragmentListFragment、およびの 2 つの実装がありFragmentTransactionます。1セット入っていandroid.appます。他のセットは にありandroid.support.v4.appます。これらは互換性がありません。FragmentActivityAndroid サポート パッケージのフラグメントのバックポートに使用している場合は、後者のペアを使用します。

私の推測では、あなたFragmentTransactionとあなたListFragmentは別のパッケージから来ていると思います.1つはからandroid.app、もう1つはからandroid.support.v4.appです。その場合は、両方が同じパッケージを使用するようにして、状況に適した方を修正する必要があります。

于 2013-01-03T00:35:35.557 に答える