【问题标题】:Motion Editor Preview not Loading运动编辑器预览未加载
【发布时间】:2021-07-31 13:20:06
【问题描述】:

我正在使用 MotionLayout 功能开发应用程序,但 MotionLayout 编辑器正在运行,并且在我单击“设计”选项卡时未显示预览。

我得到的是一个带有渲染错误的空白预览,我一直试图解决该错误无济于事。

这就是我所拥有的。

这是我遇到的错误

java.lang.reflect.InvocationTargetException
    at jdk.internal.reflect.GeneratedMethodAccessor586.invoke(Unknown Source)
atjava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at android.view.BridgeInflater.lambda$createViewFromCustomInflater$0(BridgeInflater.java:259)
    at android.view.BridgeInflater.createViewFromCustomInflater(BridgeInflater.java:285)
    at android.view.BridgeInflater.onCreateView(BridgeInflater.java:122)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:928)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:948)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1002)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:309)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1121)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:325)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:369)
    at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:141)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:710)
    at com.android.tools.idea.rendering.RenderTask.lambda$inflate$6(RenderTask.java:865)
    at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$2.run(RenderExecutor.kt:174)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
    at java.base/java.lang.String.charAt(String.java:693)
    at android.content.res.BridgeTypedArray.getType(BridgeTypedArray.java:1024)
    at android.content.res.BridgeTypedArray.getType(BridgeTypedArray.java:809)
    at android.content.res.BridgeTypedArray.getValue(BridgeTypedArray.java:778)
    at android.content.res.BridgeTypedArray.peekValue(BridgeTypedArray.java:847)
    at android.view.View.<init>(View.java:5951)
    at android.view.ViewGroup.<init>(ViewGroup.java:697)
    at android.widget.AdapterView.<init>(AdapterView.java:260)
    at android.widget.AbsSpinner.<init>(AbsSpinner.java:74)
    at android.widget.Spinner.<init>(Spinner.java:246)
    at android.widget.Spinner.<init>(Spinner.java:213)
    at android.widget.Spinner.<init>(Spinner.java:163)
    at androidx.appcompat.widget.AppCompatSpinner.<init>(AppCompatSpinner.java:209)
    at androidx.appcompat.widget.AppCompatSpinner.<init>(AppCompatSpinner.java:180)
    at androidx.appcompat.widget.AppCompatSpinner.<init>(AppCompatSpinner.java:160)
    at androidx.appcompat.widget.AppCompatSpinner.<init>(AppCompatSpinner.java:144)
    at androidx.appcompat.app.AppCompatViewInflater.createSpinner(AppCompatViewInflater.java:214)
    at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:131)
    ... 26 more

我使用的是 Android 4.2,并且我正在使用此依赖项作为 Constraint Layou。

implementation "androidx.constraintlayout:constraintlayout:2.1.0-beta02"

类路径是 classpath "com.android.tools.build:gradle:4.2.0

这是我的 gradle 版本 distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip

我已尝试重新启动、使缓存无效、清理、重建、删除 .idea 中的 lib 折叠以及删除应用程序/构建文件,但仍然无法获得预览和渲染错误仍然存​​在。

这是我的link to the project,如果您能帮助解决这个问题,我们将不胜感激。

【问题讨论】:

  • 你不会相信的。当我从 xml 中剪切所有代码并将其再次粘贴到 xml 中时,渲染没有问题并显示预览。但是,当我关闭 xml 文件并再次重新打开它时,问题再次出现。有什么东西在捉弄我,我找不到它。我错过了什么?
  • 这是一个超级奇怪的。你有没有 id 的视图 (android:id="@..)?
  • @hoford 我已经为所有视图提供了 ID。经过一段时间的努力,我发现问题出在我的微调器上。它有一个空的 autofillHint 属性。我删除了这个属性,我又开始做生意了。你能相信这么小的细节调用会导致所有这些混乱吗?

标签: android android-constraintlayout android-motionlayout


【解决方案1】:

在玩了这么久之后,我意识到问题是由我的 Spinner 上的一个属性引起的。

移除此属性后 MotionLayout Editor 预览工作正常!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    相关资源
    最近更新 更多