Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在运行时膨胀类ImageButton时出错,但Android Studio没有显示任何错误,编译也完美无缺_Android_Android Layout - Fatal编程技术网

在运行时膨胀类ImageButton时出错,但Android Studio没有显示任何错误,编译也完美无缺

在运行时膨胀类ImageButton时出错,但Android Studio没有显示任何错误,编译也完美无缺,android,android-layout,Android,Android Layout,应用程序崩溃,出现以下异常: android.view.InflateException: Binary XML file line #185: Binary XML file line #15: Error inflating class ImageButton 但是Android Studio没有显示布局错误,导致崩溃的文件的布局预览被正确呈现,应用程序可以编译并运行 崩溃ImageButton: <ImageButton android:id="@+id/kasablok_

应用程序崩溃,出现以下异常:

android.view.InflateException: Binary XML file line #185: Binary XML file line #15: Error inflating class ImageButton
但是Android Studio没有显示布局错误,导致崩溃的文件的布局预览被正确呈现,应用程序可以编译并运行

崩溃
ImageButton

<ImageButton
    android:id="@+id/kasablok_pager_btn_left"
    android:layout_width="74dp"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    app:srcCompat="@drawable/ic_chevron_right_black_24dp"
    android:rotation="180"
    tools:ignore="ContentDescription" />

源可绘制文件已存在,并已通过单击访问该文件。预览窗口中没有显示可能问题的错误或警告。

在我的
build.gradle
文件中也正确设置了
vectorDrawables.useSupportLibrary=true

答案:ic_chevron_right_black_24dp.xml文件位于特定的
res/drawable-v24
文件夹中,而不是普通的
res/drawable
。通过这种方式,
id
仅在API 24+上可用。将文件移动到后一个文件夹中确实解决了问题。我的手机运行AndroidM(API 23),这就是它崩溃的原因。找不到
ic\u V形\u右侧\u黑色\u 24dp
id

在我不知道的情况下,文件怎么会出现在错误的目录中?
我从另一个项目复制了
ic\u chevron\u right\u black\u 24dp.xml
文件。我所做的是将文件粘贴到
drawable
资源目录中,同时以
Android
查看项目(左上角的下拉列表,允许您选择如何在左侧导航面板中表示项目)。Android studio不知何故决定将文件放入特定的
drawable-v24
文件夹,而不是常规的
drawable
文件夹

为什么Android Studio没有显示任何错误,为什么预览正确膨胀?
布局预览已正确膨胀,因为预览以及
compileSdkVersion
已设置为
android-P
。通过这种方式,预览被呈现,就好像它在资源所在的
android-P
API上一样

如何解决应用程序中的
充气异常问题?
当您看到
充气异常时
,此异常本身不会提供有关您的问题的任何可用信息。它可以由各种不同的独立事物引起。你必须看得更深一点<代码>充气异常
不是原因-它是由其他原因引起的结果

在我的例子中,整个堆栈跟踪如下所示:

android.view.InflateException: Binary XML file line #185: Binary XML file line #15: Error inflating class ImageButton
    at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:2335)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1423)
    .....

 Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class ImageButton
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    .....
 Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f070070
    at android.content.res.Resources.getValue(Resources.java:1364)
    at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:328)
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:193)
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:186)
    at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)
    at android.support.v7.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:58)
    at android.support.v7.widget.AppCompatImageButton.<init>(AppCompatImageButton.java:78)
    at android.support.v7.widget.AppCompatImageButton.<init>(AppCompatImageButton.java:68)
    at android.support.v7.app.AppCompatViewInflater.createImageButton(AppCompatViewInflater.java:201)
    at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:121)  
android.view.InflateException:二进制XML文件行#185:二进制XML文件行#15:膨胀类ImageButton时出错
在android.view.LayoutInflater.inflate(LayoutInflater.java:539)
在android.view.LayoutInflater.充气(LayoutInflater.java:423)
位于android.support.v4.app.Fragment.performCreateView(Fragment.java:2335)
位于android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1423)
.....
原因:android.view.InflateException:二进制XML文件行#15:膨胀类ImageButton时出错
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
位于android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
.....
原因:android.content.res.Resources$NotFoundException:资源ID#0x7f070070
位于android.content.res.Resources.getValue(Resources.java:1364)
在android.support.v7.widget.AppCompatidDrawableManager.loadDrawableFromDelegates(AppCompatidDrawableManager.java:328)上
位于android.support.v7.widget.AppCompatidDrawableManager.getDrawable(AppCompatidDrawableManager.java:193)
在android.support.v7.widget.AppCompatidDrawableManager.getDrawable(AppCompatidDrawableManager.java:186)上
位于android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)
位于android.support.v7.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:58)
位于android.support.v7.widget.AppCompatImageButton.(AppCompatImageButton.java:78)
位于android.support.v7.widget.AppCompatImageButton.(AppCompatImageButton.java:68)
在android.support.v7.app.AppCompatViewInflater.createImageButton(AppCompatViewInflater.java:201)上
在android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:121)中

那更有用。跟踪显示,
InflateException
是由
Resources$NotFoundException
触发的,这才是真正的罪魁祸首。

答案:ic\u chevron\u right\u black\u 24dp.xml文件位于特定的
res/drawable-v24
文件夹中,而不是普通的
res/drawable
。通过这种方式,
id
仅在API 24+上可用。将文件移动到后一个文件夹中确实解决了问题。我的手机运行AndroidM(API 23),这就是它崩溃的原因。找不到
ic\u V形\u右侧\u黑色\u 24dp
id

在我不知道的情况下,文件怎么会出现在错误的目录中?
我从另一个项目复制了
ic\u chevron\u right\u black\u 24dp.xml
文件。我所做的是将文件粘贴到
drawable
资源目录中,同时以
Android
查看项目(左上角的下拉列表,允许您选择如何在左侧导航面板中表示项目)。Android studio不知何故决定将文件放入特定的
drawable-v24
文件夹,而不是常规的
drawable
文件夹

为什么Android Studio没有显示任何错误,为什么预览正确膨胀?
布局预览已正确膨胀,因为预览以及
compileSdkVersion
已设置为
android-P
。通过这种方式,预览被呈现,就好像它在
android-P