8

我自己的项目使用:

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

为了实现action bar,我使用了 ActionBarSherlock库。我将sherlock库作为现有项目导入到我的 Eclipse 中。对于sherlock,目标平台是Android v3.2 API 13

然后,我将sherlock作为库项目添加到我自己的项目中。我看到我自己的项目下有图书馆项目。一切似乎都很顺利。

我自己的项目主要活动是这样的:

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()仅在Activity类中自 3.0 起可用。由于您的目标 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 回答