android.view.InflateException : 이진 XML 파일 행 # 12 : <unknown> 클래스 팽창 오류


147

subj에 표시된 많은 종류의 오류가 발생합니다. 이러한 오류는 가끔 발생하는 것으로 보이며이를 재현 할 수 없습니다. 스택에서 다른 레이아웃 리소스에 대해 이러한 오류가 발생할 수 있음을 알 수 있습니다. XML 라인도 다양합니다.

왜이 오류가 발생했는지 설명 할 수 있습니까? 이 문제를 해결하기 위해 무엇을 할 수 있습니까?

스택

=============================================================

com.fsp.android.f generated the following exception:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fsp.android.f/com.life360.android.ui.tour.TourActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

--------- Stack trace ---------
1. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2649)
2. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
3. android.app.ActivityThread.access$2200(ActivityThread.java:131)
4. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
5. android.os.Handler.dispatchMessage(Handler.java:99)
6. android.os.Looper.loop(Looper.java:123)
7. android.app.ActivityThread.main(ActivityThread.java:4702)
8. java.lang.reflect.Method.invokeNative(Native Method)
9. java.lang.reflect.Method.invoke(Method.java:521)
10. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12. dalvik.system.NativeStart.main(Native Method)
-------------------------------

----------- Cause -----------
android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

1. android.view.LayoutInflater.createView(LayoutInflater.java:513)
2. com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
3. android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
4. android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
5. android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
6. android.view.LayoutInflater.inflate(LayoutInflater.java:382)
7. android.view.LayoutInflater.inflate(LayoutInflater.java:320)
8. android.view.LayoutInflater.inflate(LayoutInflater.java:276)
9. com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:208)
10. android.app.Activity.setContentView(Activity.java:1629)
11. com.solvek.sample.ui.BaseActivity.onCreate(BaseActivity.java:23)
12. com.solvek.sample.ui.tour.TourActivity.onCreate(TourActivity.java:161)
13. android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
14. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2587)
15. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
16. android.app.ActivityThread.access$2200(ActivityThread.java:131)
17. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
18. android.os.Handler.dispatchMessage(Handler.java:99)
19. android.os.Looper.loop(Looper.java:123)
20. android.app.ActivityThread.main(ActivityThread.java:4702)
21. java.lang.reflect.Method.invokeNative(Native Method)
22. java.lang.reflect.Method.invoke(Method.java:521)
23. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
24. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
25. dalvik.system.NativeStart.main(Native Method)
-----------------------------

-------- Environment --------
Time =2010-12-20 08:27:35 AM
Device =tmobile/htc_espresso/espresso/espresso:2.1-update1/ERE27/216830:user/release-keys
Make =HTC
Model =T-Mobile myTouch 3G Slide
Product =htc_espresso
App =com.fsp.android.f, version 2.0.9 (build 1232)

다음은 XML의 결과이지만 다른 XML에서 이러한 오류가 발생합니다.

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <ViewFlipper android:layout_gravity="fill" android:id="@+id/flipper" android:layout_height="fill_parent" android:layout_width="fill_parent">
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_1"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_2"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_3"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_4"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_5"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_6"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_7"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_8"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_9"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_10"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_11"/>
    </ViewFlipper>

    <LinearLayout android:id="@+id/exit_bar" android:layout_gravity="top" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
        <Button android:background="@drawable/orange_btn" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:textStyle="bold" android:textColor="#000000" android:shadowColor="#ffffff" android:shadowRadius="1.6" android:shadowDx="1.5" android:shadowDy="1.3" android:id="@+id/exit_tour_btn" android:text="Exit" android:layout_marginLeft="20dip"/>
        <TextView android:layout_height="wrap_content" android:textColor="#ffffff" android:layout_gravity="center" android:layout_width="110dip" android:layout_marginLeft="20dip" android:textSize="16dip" android:textStyle="bold" android:text="Life360 Tour"/>

    </LinearLayout>

    <Button style="@style/BlueBtn" android:text="Continue" android:layout_marginTop="40dip" android:id="@+id/continue_btn" android:visibility="gone" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" />

    <FrameLayout android:id="@+id/bottom_bar" android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/left" android:layout_gravity="left|center" android:background="@drawable/tour_left" android:layout_marginLeft="10dip"/>
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/right" android:layout_gravity="right|center" android:background="@drawable/tour_right" android:layout_marginRight="10dip"/>               
    </FrameLayout>
</merge>

이것을 확인하십시오. 이것이 나를 도와줍니다! stackoverflow.com/questions/9480972/android-tablelayout-error
user1974235

답변:


266

팽창 예외는 실제로는 문제가 아니지만 실제로 레이아웃의 다른 더 깊은 문제에서 비롯된 다음 InflateException에 래핑됩니다. 일반적인 문제는 드로어 블 리소스를로드하는 이미지 뷰를 부 풀릴 때 메모리 부족 예외입니다. 이 리소스 중 하나의 픽셀 해상도가 높으면 많은 메모리가 필요하여 팽창 예외가 발생합니다.

따라서 기본적으로 드로어 블 이미지의 픽셀 해상도가 레이아웃에 필요한 최소값인지 확인하십시오.


4
@vnportnoy 이미지를 제거 할 때도 같은 오류가 발생합니다
Harin Kaklotar

4
신청서에 드로어 블이 없다고 생각합니다
Arturas M

3
언어 번들을 확인하십시오. 문자열 리소스가 누락되었을 수 있습니다. 이 경우 내 문제가 발생했습니다.
Mohammed Subhi Sheikh Quroush

: 문제는 계측 테스트를 경우,이 시도 stackoverflow.com/q/24904445
제리 Destremps

후 여전히 오류가 일어날 내 XML에서 이미지 뷰를 제거 클래스 경로 'com.android.tools.build:gradle:3.0.0-alpha2'및 컴파일 'com.android.support.constraint : 제약 레이아웃 : 1.0.2'
Subho

24

ViewFlipper레이아웃 팽창 중에 모든 이미지를 메모리에로드합니다. 내 이미지가 큰 때문에 내가 교체, 많은 메모리를 필요 ViewFlipperImageSwitcher하는 등의 애니메이션 이미지를 변경할 수 ViewFlipper있지만,이 번에 하나의 이미지를로드합니다.


23

사용하는 VectorDrawable지원 라이브러리를 사용하는 app:srcCompat대신 사용을 잊어 버린 경우에도 발생할 수 있습니다android:src

정확한 오류는 다음과 같습니다. 이진 XML 파일 줄 #XX : 클래스 ImageView 팽창 오류

그 링크를 참조하십시오


srcCompat : 당신이 활성화되면, 당신은 항상 응용 프로그램 사용한다
모하메드 ALOUANE

그러나 이것은 무작위 충돌을 일으키지 않습니다.
Menna-Allah Sami

11

하나의 생성자로만 사용자 정의보기를 만들 때 동일한 오류가 발생했습니다. 사용자 정의보기에 대한 모든 생성자를 정의하십시오.

   public CustomWebView(Context context) {
        super(context);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

11

나는 질문에 이미 답변되었지만 여전히 누군가가 이런 종류의 문제에 부딪 칠 수 있다고 생각하여 게시하고 있습니다.

내 문제는 res / layout / 폴더의 레이아웃과 res / values ​​/ dimens의 @dimens 값을 참조하는 전화로 응용 프로그램을로드하는 것입니다. 액세스하려는 font_22이며 res / values-xlarge에 정의되어 있습니다. / 흐리게합니다.

실제로 기존 프로젝트의 UI를 업데이트하고 있습니다.

레이아웃 폴더에 xml을 작성하는 동안 힌트를 위해 Ctrl + Space를 사용하는 IDE Eclipse를 사용하고 있기 때문에이 문제가 발생했습니다. 내가 작성하는 폴더에 관계없이 값의 모든 값과 value-xlarge 폴더를 표시합니다.

또한 두 파일의 값이 다른 화면에 매핑되도록 동일해야한다는 것을 알고 있습니다.

이것이 누군가가 이런 종류의 바보 같은 문제에 부딪 칠 수 있기를 바랍니다.


9

나는 같은 버그가 발생했으며 근본 이유는 다음과 같습니다.

응용 프로그램 컨텍스트를 사용하여 뷰를 부풀립니다.

Activity Context로 팽창하면 버그가 수정되었습니다.


6

내 사진 크기는 14Kb에 불과하지만 문제는 디자이너가 1011px x 1819px (해상도가 너무 높아서 InflateException을 유발 함)를 제공한다는 것입니다.


6

누군가 비슷한 문제가 발생하면보기를 팽창시키는 동안 그러한 문제가 발생했습니다.

View.inflate(getApplicationContext(), R.layout.my_layout, null)

로 교체 getApplicationContext()하여 고정this


5

테마를 재료 테마로 선택했기 때문에이 오류가 발생했습니다. 그러나 4.4.2에서 앱을 실행하려고 할 때이 오류가 발생했습니다.

해결책 : Theme_holo를 테마로 선택


내 문제는에 만 충돌이 표시되는 것과 비슷할 수 있습니다 4.2.2. 그러나 머티리얼 테마에서 Theme_holo로 어디에서 변경합니까? 내 styles.xml또는에 키워드 소재가 표시되지 않습니다 v21/styles.xml. 내 질문보기 : stackoverflow.com/questions/37883677/…
Katedral Pillon

4

이 링크 가 도움 될 수 있습니다. 매니페스트에서 문제를 확인하십시오. 다시 발생할 수 있으면 전체 스택 추적을 게시하여 오류가 실제로 무엇인지 확인할 수 있습니다.

편집 : 당신이 이것을 확인 확신하지만 TourActivity 레이아웃에 사용하는 XML 파일의 12 번째 줄에 무엇입니까?


이 문제를 읽었습니다. 이것은 내 경우가 아닙니다 (적어도 볼 수는 없습니다). 질문에 스택을 추가합니다.
Solvek

업데이트 된 답변, XML을 게시 할 수 있습니까? 마음에 들지 않으면 XML이 너무 크지 않은 경우 전체 XML을 게시하십시오.
Kevin Coppock

초기 질문에 XML 추가
Solvek

흠, 불행히도 병합 또는 ViewFlipper를 사용한 경험이 없습니다 ...이 문제가 발생하는 모든 XML 파일이 merge 또는 ViewFlipper를 사용합니까?
Kevin Coppock

아니요. 다른 파일에는 플리퍼 병합이 없지만 여전히 같은 문제가 있습니다.
Solvek

4

나를 위해, 오류 메시지는 실제로 로그 고양이에서 충분하지 않으므로 문제의 원인을 알아 내기 위해 수행 한 작업은 다음과 같습니다.

(로그 고양이 오류 메시지에서 HomeFragment.java의 특정 레이아웃을 팽창시키는 동안 오류가 발생했다고 말했습니다)

  1. 레이아웃이 팽창하기 직전에 중단 점을 넣었습니다.
  2. 특정 중단 점에 도달 할 때까지 디버그 모드에서 응용 프로그램을 실행했습니다.
  3. 커서로 줄을 선택하고 실행했습니다. Evaluate expression 했습니다.
    • Run > Evaluate Expression 또는 alt - F8
  4. 결과는 문제의 원인에 대한 자세한 정보를 보여주었습니다. 제 경우에는 사용 가능한 드로어 파일이었습니다 tools:targetApi="lollipop"(버그는 구형 장치에서만 발생했습니다).

감사! 이것은 문제를 찾는 데 도움이되었습니다!
Sergey Stasishin

4

동일한 오류를 발견했으며 오류가 무엇인지 식별하는 데 이틀이 걸렸습니다.

오류는 단순히 사용하려고했기 때문에 발생했습니다. android:background

오히려 : app:srcCompat

SVG 파일에서.

당신의 경우에, 나는 이것이 믿습니다

<ImageView 
    android:scaleType="fitXY" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/tour_11"      <-- the error is here !
 />

이런 식으로 사용하는 것이 좋습니다

이것을 build.gradle 앱에 추가하십시오.

android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }

<androidx.appcompat.widget.AppCompatImageView  <-- use **AppCompatImageView** not **ImageView**
        android:scaleType="fitXY" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        app:srcCompat="@drawable/tour_11"
     />

이게 도움이 되길 바란다.


3

나는 그것이 답변 된 질문이라는 것을 알고 있지만, 내가 직면 한 원인을 보지 못한다.

Android Studio에서 드로어 블을 / drawable-V24에 배치했습니다. 에뮬레이터는 API 23입니다. 결국에는 찾을 수 없습니다.

해결책은 모든 드로어 블을 / drawable 폴더 (-24)로 이동하는 것이 었습니다.


나도 같은 경우가 있었다.
Rafael


2

나는 같은 오류가 있었고 drawables를 drawable-mdpi 폴더에서 drawable 폴더로 옮기는 것을 해결했습니다. Eclipse에서 모든 것이 완벽하게 작동했기 때문에 깨달을 시간이 생겼습니다 .Android Studio에서는 이러한 추악한 런타임 오류가 발생했습니다.

참고 편집 : Eclipse에서 Android Studio로 마이그레이션하고 프로젝트가 Eclipse에서 오는 경우 발생할 수 있으므로 Android Studio에서는 일식과 약간 다를 수 있습니다.


2

필자의 경우 부동 작업 버튼을 사용 하고 설정 하면이 오류가 발생 합니다 android:backgroundTint="#000". 그런 다음 설정하지 않고 backgroundTint문제를 해결하십시오. 그것이 당신에게 도움이되기를 바랍니다.


고맙습니다. 제 경우에는 실제로 문제였습니다. app:backgroundTint대신 사용해야 합니다 android:backgroundTint.
Drago

2

나를 위해, 내 문제는 내가

android:background="?attr/selectableItemBackground"

LinearLayout 배경으로 일단 제거하면 테스트가 통과되었습니다.


1

나는 지금이 문제가 있었고 그것이 무엇인지 알아낼 수있었습니다. 문제를 일으킨 내 값의 색상을 참조하고있었습니다. 드롭 다운 제안 중 하나를 사용하는 대신 수동으로 정의하면 효과가 있습니다!


1

API lvl 16에서 앱을 실행할 때 동일한 오류가 발생했습니다 (26은 괜찮 았습니다). ?attrr/colorAccent도형 드로어 블에 사용했기 때문입니다 .

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="8dp" />

    <solid android:color="@attr/colorAccent" />

</shape>

일반 색상으로 바꾸면 문제가 해결되었습니다.


1

나는 같은 문제가 있었고 drawable 폴더의 이미지 앞에 (24)가있는 drawable-v24를 제거하고 일반 drawables로 대체하여 해결했습니다.


1

나는이 실이 오래되었다는 것을 알고 있지만 아무도 대답하지 않고 잠들지 않는 밤을 보내지 않아야한다.

레이아웃 파일에 모두 하드 코딩 된 속성이 포함 된 오래된 프로젝트를 리팩터링했습니다 android:maxLength = 500. 그래서 res/dimen파일에로 등록하기로 결정했습니다 <dimen name="max_length">500</dimen>.

내 res-value로 거의 30 개의 레이아웃 파일 리팩토링을 마쳤습니다. 뭔지 맞춰봐? 다음에 프로젝트를 실행할 때도 같은 결과가 나기 시작했습니다 InflateException.

해결책으로 모든 변경 사항을 다시 실행하고 모든 값을 이전과 동일하게 유지해야했습니다.

TLDR;

1 단계 : 모두 잘 작동합니다.

2 단계 : 유지 보수를 강화하기 위해 and 로 교체 android:maxLength = 500하여 모든 것이 잘못되었습니다 (와 충돌 ).<dimen name="max_length">500</dimen>android:maxLength = @dimen/max_lengthInflateException

3 단계 : 모든 불량

4 단계 :로 교체 android:maxLength = @dimen/max_length하여 모든 작업을 다시 수행android:maxLength = 500 .

5 단계 : 모두 양호


1

모든 drawable 항목을 drawable-v24에서 drawable로 이동하여 해결했습니다.


0

나는 비슷한 문제에 직면했다. 누구에게나 이것은 코드에서 다양한 나쁜 사용법의 문제 일 수 있습니다.

  1. XML의 잘못된 레이아웃 태그
  2. 무거운 리소스를 ImageView로 직접로드하여 OOM을
  3. 스타일 사용 관련 문제

가장 무시되는 요소 중 하나는 뷰를 부 풀리는 동안 올바른 컨텍스트사용하는 것일 수 있습니다. 활동 컨텍스트가 필요한 경우 ApplicationContext를 사용하고 있지 않은지 확인하십시오 . 동안, ApplicationContext 항상 오류에 끝나지 않을 수도 있지만,보기 계층 구조에 따라하는 것은이 중요 할 수있다.

BAD 컨텍스트 ( 4 일 동안 Activity 대신 ApplicationContext 사용)로 문제를 해결했습니다. 그래서 해결되면 시도하십시오. 행복한 코딩!


0

나는 같은 문제에 직면하여 View 대신 xml로 view tag를 사용했다. View 클래스로 교체하면 문제가 해결되었습니다.

그것이 당신에게도 도움이 되길 바랍니다 ..


0

API 버전을 확인해야합니다. 나는 내 LinearLayout마음에 배경색을주었습니다

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/as_royalblue"
        android:orientation="vertical"></LinearLayout>

폴더 as_royalblue.xml내 에서 동일한 오류가 발생했는지 확인하십시오.drawable

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="90"
        android:endColor="@color/royalblue_s"
        android:startColor="@color/royalblue_e" />
</shape>

내가 그것을 고치는 방법, 실제로 그것은 Api 문제 인 것이므로 API 24 이상이면 API 레벨을 확인하여 원하는 방식으로 사용할 수 있습니다. 그러나 24 세 미만이면 사용을 피해야하는데, 쥬 트는 보통 색 또는 색 그라데이션이 아닌 색을 제공합니다.

fun checkAPI_N(): Boolean {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
            return true
        else
            return false
    }

linearlayouts에 ID를주고 괜찮다면 배경을 설정하십시오.

 if(UtilKotlin.checkAPI_N()){
            linlay_act_menu_container.setBackgroundResource(R.drawable.a_6)
            linlay_act_menu_logo.setBackgroundResource(R.drawable.as_strain)
        }else {//todo normal color background setting}

0

필자의 경우 레이아웃 파일에 사용하는 라이브러리 UI 구성 요소의 전체 패키지 이름을 지정해야합니다.


0

나를 위해 동일한 레이아웃 파일에서 XML 벡터 그래픽 이미지를 일반 png와 혼합하려고 시도했기 때문에 발생했습니다.

xml 벡터 그래픽을 png로 바꾸고 나서야 작동하기 시작했습니다.


0
  • 나는이 문제를 해결하기 위해 drawable (v24)에서 이미지를 삭제하고 drawable 폴더에 붙여 넣습니다.


0

나는 같은 오류가 있었다 Crashlytics이상한 기기에서 . Motorola One Vision Android 5.1 및 20GB (무료) RAM,이 기기는 원래 Android 9.0, 4GB RAM과 함께 제공됩니다.

아마도 누군가 내가 현재 개발중인 앱을 해킹하려고 시도하고 있으며 다중 APK를 다루는 데 문제가 있습니다. 따라서 드로어 블을 찾을 수없고 앱에서 충돌이 발생합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.