8

私自身のプロジェクトは以下を使用します:

<uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="13" />

アクション バーを実装するには、 ActionBarSherlockライブラリを使用します。sherlockライブラリを既存のプロジェクトとして Eclipseにインポートしました。sherlockの場合、ターゲット プラットフォームはAndroid v3.2 API 13です。

次に、シャーロックをライブラリ プロジェクトとして自分のプロジェクトに追加しました。自分のプロジェクトの下にライブラリ プロジェクトがあることを確認しました。すべてがうまくいくようです。

私自身のプロジェクトのメイン アクティビティは次のようになります。

package com.test;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MyActivity extends FragmentActivity {

    /**
     * hosts a Fragment, and the Fragment will inflate a layout to show
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FragmentManager fragMgr;
        FragmentTransaction fragTrans;

        fragMgr = getFragmentManager(); //error complains here


           FirstFragment list = new FirstFragment();

        fragTrans = fragMgr.beginTransaction();
        fragTrans.add(android.R.id.content, list).commit();

    }
}

しかし、アプリケーションを実行すると、次のエラーが発生しました。

java.lang.NoSuchMethodError: com.test.MyActivity.getFragmentManager

getFragmentメソッドとして解決できないのはなぜ?? 自分のプロジェクトのプロジェクト ライブラリとして sherlock を使用しました...

4

2 に答える 2

31

このメソッドは、クラスgetFragmentManager()で 3.0 以降でのみ使用できます。Activityターゲット SDK は 13 であり、コンパイル時に問題はありませんFragmentActivityActivity

ただし、コードを下位の SDK (たとえば 7) で実行すると、そのActivityクラスにはそのようなメソッドはありません。したがって、解決策は次を使用することです:

 getSupportFragmentManager();

これはすべてのAndroidバージョンで機能します。

于 2012-02-08T15:42:46.173 に答える
7

使用する必要があります

FragmentTransaction トランザクション = getSupportFragmentManager().beginTransaction();

インポートしていることを確認してください:

import android.support.v4.app.ActionBar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
于 2012-02-08T15:41:30.330 に答える