Android兼容性库错误

时间:2011-07-17 04:56:05

标签: android compatibility

有没有人在Android上尝试新的兼容性库的演示应用程序。 Here

我正在尝试使用API​​ 11进行v4构建,当我尝试使用Support4Demo并点击Fragment Demo中的Tabs和Pager时,我继续收到此错误

  

e07-16 21:32:06.890:ERROR / AndroidRuntime(15315):   java.lang.NoClassDefFoundError:   com.example.android.supportv4.app.LoaderCustomSupport $ AppListFragment   07-16 21:32:06.890:ERROR / AndroidRuntime(15315):at   com.example.android.supportv4.app.FragmentTabs.onCreate(FragmentTabs.java:55)   07-16 21:32:06.890:ERROR / AndroidRuntime(15315):at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)   07-16 21:32:06.890:ERROR / AndroidRuntime(15315):at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1785)   07-16 21:32:06.890:ERROR / AndroidRuntime(15315):at   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842)   07-16 21:32:06.890:ERROR / AndroidRuntime(15315):at   android.app.ActivityThread.access $ 1500(ActivityThread.java:132)07-16   21:32:06.890:ERROR / AndroidRuntime(15315):at   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1038)   07-16 21:32:06.890:ERROR / AndroidRuntime(15315):at   android.os.Handler.dispatchMessage(Handler.java:99)07-16   21:32:06.890:ERROR / AndroidRuntime(15315):at   android.os.Looper.loop(Looper.java:143)07-16 21:32:06.890:   错误/ AndroidRuntime(15315):at   android.app.ActivityThread.main(ActivityThread.java:4263)07-16   21:32:06.890:ERROR / AndroidRuntime(15315):at   java.lang.reflect.Method.invokeNative(Native Method)07-16   21:32:06.890:ERROR / AndroidRuntime(15315):at   java.lang.reflect.Method.invoke(Method.java:507)07-16 21:32:06.890:   错误/ AndroidRuntime(15315):at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)   07-16 21:32:06.890:ERROR / AndroidRuntime(15315):at   com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)07-16   21:32:06.890:ERROR / AndroidRuntime(15315):at   dalvik.system.NativeStart.main(原生方法)

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:10)

无法找到类的原因是AppListFragment实现的其中一个接口(OnQuerytextListener)是在SearchView中定义的,只能在Honeycomb(API 11 +)中找到。

public static class AppListFragment extends ListFragment implements OnQueryTextListener, LoaderManager.LoaderCallbacks<List<AppEntry>>
{

我搜索了兼容性jar但找不到任何与SearchView有关的内容,所以我认为这只适用于Honeycomb及以上(并且在低于Honeycomb的目标下进行编译会阻止此工作。

还有一些其他故障出于同样的原因,例如Loader - &gt;然后按下菜单 - 缺少方法。

来自Compatibility Package页面

  

警告:请确保您不要将标准的android软件包与android.support库中的软件包混淆。某些代码完成工具可能会出错,尤其是在您针对最新版本的平台构建时。为了安全起见,请将构建目标设置为与为android:minSdkVersion定义的版本相同的版本,并仔细检查支持库中也存在的类的import语句,例如SimpleCursorAdapter

遵循他们自己的建议意味着整个项目无法编译 - 一半的示例类似乎依赖于高于API 4的东西。

我的回答?一些例子很糟糕,并且依赖于不存在的代码。运气好的话,Google会尽快更新它们。

哦,是的,您可以通过从AppListFragment中删除OnQueryTextListener和方法来暂时使其工作,但稍后会因其他问题而失败。

答案 1 :(得分:6)

我通过在FragmentTab.onCreate和FragmentTabPager.onCreate中注释掉正确的行来解决这个问题。

//mTabManager.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),
//        LoaderCustomSupport.AppListFragment.class, null);