【问题标题】:android.support.v7.widget.RecyclerView failed to instantiateandroid.support.v7.widget.RecyclerView 无法实例化
【发布时间】:2014-11-12 12:00:25
【问题描述】:

我在 Eclipse 中为 API 15-21 创建了一个 Android 应用程序项目。

我导入了 appCompat v7、cardView 和 recyclerView 库,但在我的 XML 中添加 recyclerView 时,android.support.v7.widget.RecyclerView 无法实例化。

我有带有更新库的最新 SDK。

java.lang.UnsupportedOperationException: Unsupported Service: accessibility
at com.android.layoutlib.bridge.android.BridgeContext.getSystemService(BridgeContext.java:465)
at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:290)
at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:266)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:442)
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:194)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:132)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:806)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:782)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:401)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:329)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:517)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1584)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1309)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener.reloadLayoutSwt(GraphicalEditorPart.java:1817)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener.access$0(GraphicalEditorPart.java:1755)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener$1.run(GraphicalEditorPart.java:1749)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4147)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3764)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)

【问题讨论】:

  • 感谢分享您的堆栈跟踪。
  • 我也遇到了同样的问题。你是怎么解决的。请帮我。谢谢你.. @Rulogarcillan
  • 在对应的问题stackoverflow.com/questions/26792510/…中为android studio提供了同样问题的另一种解决方案

标签: java android eclipse android-support-library


【解决方案1】:

这个问题最终在 API Level 22 SDK Manager 和 RecyclerView 支持库中得到修复。要在相关 Android 问题(2015 年 3 月 11 日关闭)中引用 this comment,您需要:

...通过 SDK 管理器更新到 API 22 的最新 SDK 平台, 并通过更新支持更新到最新的回收站视图 通过 SDK 管理器存储库,并在您的 build.gradle 文件中使用 最新版本(22.0.0)

此外,在设计器工具的顶部,您需要选择 API Android 版本 22。如果您选择较早的版本,即使您拥有最新的支持库,您也会继续看到错误。

【讨论】:

    【解决方案2】:

    这是预览窗口的问题还是运行时的问题?

    RecyclerView 需要一个 LayoutManager 来渲染。

    在您的 Java 代码中,添加以下内容:

    mRecyclerView.setLayoutManager(new LinearLayoutManager(context));
    

    【讨论】:

    • 问题出在预览窗口中
    • 组件根本就不是为了预览而设计的……我们只需要等待支持库的更新。您可以在工具 xmlns 中将 recyclerView 的可见性设置为消失以继续使用预览。
    • 当我创建一个全新的应用程序 4.X L 预览而不是 5.0 时,就好像我的库有缺陷,甚至我的旧 SDK 我下载了最新版本。我以前下载的android sdk manager 如何更改配置可见性?
    • 我在 Android Studio 中尝试了tools:visibility="gone",但它仍然抛出相同的异常。 tools:visibility 本身有效(在其他视图上尝试过)。
    • 他们解决了这个问题吗?
    【解决方案3】:

    您需要添加 android-support-v7-recyclerview.jar 文件。它位于 sdk\extras\android\support\v7\recyclerview\libs

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2018-04-16
    • 2014-12-21
    相关资源
    最近更新 更多