预览自定义视图中的Android ResourceNotFoundException

时间:2019-08-20 20:02:42

标签: android android-studio

我有一个自定义视图,我们称之为CustomView。在初始化中,我调用以下方法

textPaint.setTypeface(ResourcesCompat.getFont(getContext(),R.font.pretty_font));

在应用程序中,此视图可以正常工作,并且可以按原样显示字体,但问题是该视图的预览不会在编辑器中加载以下详细信息:

  

android.content.res.Resources $ NotFoundException:字体资源ID

     

0x7f090000无法检索。

     

在androidx.core.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:365)     在   androidx.core.content.res.ResourcesCompat.getFont(ResourcesCompat.java:230)     在   com.mycompany.myapp.view.views.CustomView.init(CustomView.java:490)     在   com.mycompany.myapp.view.views.CustomView.initAttrs(CustomView.java:484)     在   com.mycompany.myapp.view.views.CustomView。(CustomView.java:116)     在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native   方法)   sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)     在   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)     在java.lang.reflect.Constructor.newInstance(Constructor.java:423)     在   org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:403)     在   org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:186)     在   org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:144)     在   com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:309)     在   android.view.BridgeInflater.loadCustomView(BridgeInflater.java:418)     在   android.view.BridgeInflater.loadCustomView(BridgeInflater.java:429)     在   android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:333)     在   android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)     在   android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:863)     在   android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)     在android.view.LayoutInflater.rInflate(LayoutInflater.java:837)处   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)     在   android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:866)     在   android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)     在android.view.LayoutInflater.rInflate(LayoutInflater.java:837)处   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)     在android.view.LayoutInflater.inflate(LayoutInflater.java:515)处   android.view.LayoutInflater.inflate(LayoutInflater.java:394)位于   com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:323)     在com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:394)     在   com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:200)     在   com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:572)     在   com.android.tools.idea.rendering.RenderTask.lambda $ inflate $ 5(RenderTask.java:698)     在   java.util.concurrent.CompletableFuture $ AsyncSupply.run(CompletableFuture.java:1590)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)     在   java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)     在java.lang.Thread.run(Thread.java:748)

为什么不会在编辑器中加载此资源,但是在应用程序中运行该资源没有问题? 仅供参考,MinSdk = 21,TargetSdk = 28

1 个答案:

答案 0 :(得分:3)

请勿在设计模式下调用npm run build:watch。使用:

setTypeface