レイアウトAndroidでTextClockウィジェットを作成すると、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)
TextClock 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" />
minSdkVersion
を17に変更してレイアウトv17を作成しても、結果は得られませんでした。 Android Studio 3.6、3.6.1、4.0で問題が見つかりました
私も同じ問題を抱えていました。私の回避策は、TextClockがTextViewを拡張するときに、右クリック->変換ビューを介してTextClockをTextViewに変換し、次にレイアウトをレンダリングし、レイアウトがレンダリングされた後、TextClockに変換し直しました。
これは醜い回避策です-修正ではありません(Android Studio)を閉じた後に繰り返す必要があります)-でも、少なくとも今はレイアウトを見ることができます。
Android Studioにバグとして報告し、うまくいけば彼らはそれを修正します
修正/回避策は、TextClock
のサブクラスを作成し、作成したサブクラスにこれを追加することです。
@Override
protected void onAttachedToWindow() {
try {
super.onAttachedToWindow();
} catch(Exception e) {
}
}