java.lang.UnsupportedOperationException:不支持的服务:accessibility android studio

时间:2014-11-07 01:23:46

标签: java android android-studio material-design

我遇到了这个UnsupportedOperationException的问题。我最近改用了android studio,所以这对我来说很新鲜。我想将recyclerview添加到我的项目中,并用它做一些事情,但布局设计师却抛出了这个错误:

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(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:379)
at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:99)
at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:172)
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:333)
at com.android.tools.idea.rendering.RenderService$5.compute(RenderService.java:674)
at com.android.tools.idea.rendering.RenderService$5.compute(RenderService.java:663)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932)
at com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:663)
at com.android.tools.idea.rendering.RenderService.render(RenderService.java:790)
at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:327)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)

问题应该是什么,我真的不知道。我已经看过将RecyclerView实施到项目中的教程,但这是Android Studio在使用官方Google代码后给我回复的内容。


编辑:似乎已经解决,因为我接受的答案是正确的,但我没有自己尝试。

编辑:当我接受当前的答案时,它与我的问题有些相关,但它不是一个完整的解决方案。如果任何人能够或可以为此提供一些修复或解决方法,只要提供此类信息,或者如果问题由IntelliJ或任何开发人员解决,我都会更新已接受的答案。还要感谢Dave指出失败的地方,至少我们可以给开发者写一张票:)

5 个答案:

答案 0 :(得分:4)

如果请求的服务不是以下之一,则

BridgeContext.getSystemService()(自5.0.0 r1起)将抛出UnsupportedOperationException

  • “layout_inflater”
  • “textservices”
  • “窗口”
  • “input_method”
  • “功率”
  • “显示”

在这种情况下,抛出的Exception将包含所请求服务的名称。

似乎IntelliJ的UI帮助程序尚未更新,因为BridgeContext不应该要求“辅助功能”服务。正如评论者所建议的那样,坚持使用XML布局,而不是WYSIWYG。

答案 1 :(得分:4)

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

  

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

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

答案 2 :(得分:1)

我在最新的1.5.1工作室中发现了这个错误。 在我的情况下,它通过更改API级别进行预览来进行修复。 enter image description here

答案 3 :(得分:0)

不确定是否属于这种情况,对GLSurfaceView - 扩展课程也是如此。

我为了调试目的而覆盖onDraw(Canvas)

@Override protected void onDraw(Canvas canvas) {
    this.toString();    // ← wanted a break here
    super.onDraw(canvas);
}

一旦我删除了无意义的this.toString();,设计师就开始工作了。

答案 4 :(得分:0)

Jost Change Api等级22或23。

enter image description here