Lee*_*fin 8 android actionbarsherlock
我自己的项目使用:
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="13" />
Run Code Online (Sandbox Code Playgroud)
为了实现操作栏,我使用ActionBarSherlock库.我将sherlock库作为现有项目导入Eclipse.对于sherlock,目标平台是Android v3.2 API 13.
然后,我将sherlock作为库项目添加到我自己的项目中.我看到我自己的项目下有图书馆项目.一切似乎都很顺利.
我自己的项目主Activity看起来像这样:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的应用程序时,我收到以下错误:
java.lang.NoSuchMethodError: com.test.MyActivity.getFragmentManager
Run Code Online (Sandbox Code Playgroud)
为什么getFragment不能解决这个方法?我使用sherlock作为我自己项目的项目库......
Ovi*_*tcu 31
该方法getFragmentManager()仅在3.0版本中可用Activity.因为你的目标SDK是13,而FragmentActivity扩展从Activity有在编译的时候没有任何问题.
但是当您在较低的sdk(例如7)上运行代码时,Activity该类中没有这样的方法.所以解决方案是使用:
getSupportFragmentManager();
Run Code Online (Sandbox Code Playgroud)
这将适用于所有Android版本.
你需要使用
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18881 次 |
| 最近记录: |