布局预览中的 TextClock 渲染问题

Typ*_*man 8 java android nullpointerexception build.gradle

当我在布局中创建 TextClock 小部件时,Android Studio 布局预览显示并没有显示更改。但在调试设计小部件工作完美。如果我评论它布局预览工作成功。另一台 PC Android Studio 工作成功并显示 TextClock。

错误布局预览

java.lang.NullPointerException
at android.content.ContentResolver.registerContentObserver(ContentResolver.java:2263)
at android.widget.TextClock.registerObserver(TextClock.java:626)
at android.widget.TextClock.onAttachedToWindow(TextClock.java:545)
at android.view.View.dispatchAttachedToWindow(View.java:19575)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:44)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:355)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:404)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:141)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:657)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$7(RenderTask.java:788)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)

文本时钟 XML 代码

<TextClock
            android:layout_width="120dp"
            android:layout_height="35dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_marginEnd="16dp"
            android:format24Hour="dd.MMMyyyy, HH:mm"
            android:format12Hour="dd.MMM.yyyy, hh:mm a"
            android:textColor="#d0ffffff"
            android:textSize="30sp" />
Run Code Online (Sandbox Code Playgroud)

更改minSdkVersion为 17 并创建布局 v17 没有给出任何结果。在 Android Studio 3.6、3.6.1 和 4.0 中发现的问题

Jas*_*ngh 9

注释您的 TextClock 并刷新您的预览,然后取消注释您的 TextClock。这将解决您的问题。

我升级到AS 3.6.1时遇到这个问题


小智 5

修复/解决方法是创建一个子类TextClock 并将其添加到创建的子类中:

@Override
protected void onAttachedToWindow() {
    try {
        super.onAttachedToWindow();
    } catch(Exception e)  {
    }
}
Run Code Online (Sandbox Code Playgroud)

来源


小智 3

我有同样的问题; 我的解决方法是通过右键单击将 TextClock 转换为 TextView -> 将视图转换为 TextClock 扩展 TextView,然后呈现布局,在呈现布局后我将其转换回 TextClock。

这是一个丑陋的解决方法 - 不是一个修复(你必须在关闭 Android Studio 后重复它) - 但至少我现在可以看到布局。

我会将其作为错误报告给 Android Studio,希望他们能修复它

  • 我已经向开发人员发送了错误报告。 (2认同)