Android Studio部分布局预览空白但模拟器运行正常问题求助
我旧电脑上的Android布局加载一切正常,换了新笔记本后从GitHub拉取该项目运行,应用在模拟器中运行完全正常,但部分布局预览显示空白,如下图:
xml代码如下:
<?xml version="1.0" encoding="utf-8"?> <androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <com.google.android.material.navigation.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:itemIconTint="@color/teal_700" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" /> </androidx.drawerlayout.widget.DrawerLayout>
Google Material版本:com.google.android.material:material:1.2.1
布局报错信息如下:
java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.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.rInflate_Original(LayoutInflater.java:1124) 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_Delegate.parseInclude(LayoutInflater_Delegate.java:204) at android.view.LayoutInflater.parseInclude(LayoutInflater.java:1159) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1117) 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_Delegate.parseInclude(LayoutInflater_Delegate.java:204) at android.view.LayoutInflater.parseInclude(LayoutInflater.java:1159) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1117) 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_Delegate.parseInclude(LayoutInflater_Delegate.java:204) at android.view.LayoutInflater.parseInclude(LayoutInflater.java:1159) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1117) 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:354) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:431) 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.widget.TextView.<init>(TextView.java:996) at android.widget.EditText.<init>(EditText.java:87) at android.widget.EditText.<init>(EditText.java:83) at androidx.appcompat.widget.AppCompatEditText.<init>(AppCompatEditText.java:74) at androidx.appcompat.widget.AppCompatEditText.<init>(AppCompatEditText.java:69) at androidx.appcompat.app.AppCompatViewInflater.createEditText(AppCompatViewInflater.java:209) at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:127) ... 49 more
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.FrameLayout.<init>(FrameLayout.java:99) at com.android.layoutlib.bridge.MockView.<init>(MockView.java:55) at com.android.layoutlib.bridge.MockView.<init>(MockView.java:51) at com.android.layoutlib.bridge.MockView.<init>(MockView.java:47) at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:324) 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.rInflate_Original(LayoutInflater.java:1124) 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_Delegate.parseInclude(LayoutInflater_Delegate.java:204) at android.view.LayoutInflater.parseInclude(LayoutInflater.java:1159) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1117) 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_Delegate.parseInclude(LayoutInflater_Delegate.java:204) at android.view.LayoutInflater.parseInclude(LayoutInflater.java:1159) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1117) 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_Delegate.parseInclude(LayoutInflater_Delegate.java:204) at android.view.LayoutInflater.parseInclude(LayoutInflater.java:1159) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1117) 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:354) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:431) 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)
我尝试在网上搜索这些报错信息,没有找到和我问题匹配的解决方案。
奇怪的是部分布局可以正常加载预览,只有部分布局不行,如下图:
我尝试重新构建项目,但问题没有解决。
新建XML布局文件预览完全正常,只有原有旧布局存在该问题,代码无编译错误,应用运行也无异常。
希望有经验的开发者能帮忙定位问题,提前感谢!
更新
问题已解决,是android:autofillHints=""属性配置导致的问题。
内容的提问来源于stack exchange,提问作者MK.
相关产品推荐
相关产品推荐

