안드로이드 뷰부풀리기예외:이진 XML 파일라인 #12: 클래스 부풀리기 오류
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의 결과는 여기에 있지만 다른 xmls에서는 이러한 오류가 발생합니다.
<?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>
에 더 합니다. 이 는 에 됩니다 가 하여 가 는 가 됩니다 가 는 InflateException
는 . . 는 입니다 인 입니다 는 인 ImageView
인출 가능한 리소스를 로드합니다.이러한 리소스 중 하나가 픽셀 해상도가 높을 경우 많은 메모리가 필요하여 부풀리기 예외가 발생합니다.
따라서 기본적으로 모든 이미지 드로잉의 픽셀 해상도가 레이아웃에 필요한 최소값인지 확인합니다.
이것은 당신이 a를 사용하는 경우에도 발생할 수 있습니다.VectorDrawable
library를 원용및을림리림을oge및원ttd app:srcCompat
에 대신에android:src
정확한 오류: 이진 XML 파일 라인 #XX: 클래스 ImageView를 부풀리는 동안 오류가 발생했습니다.
ViewFlipper
레이아웃 부풀리기 중에 모든 이미지를 메모리에 로드합니다.이미지가 커서 메모리가 많이 필요해서 교체했습니다.ViewFlipper
와 함께ImageSwitcher
를수는다은과꿀다과e은hnene로h를s는꿀수 ViewFlipper
한 번에 하나의 이미지만 로드됩니다.
하나의 생성자만으로 사용자 지정 보기를 만들 때 동일한 오류가 발생했습니다. 사용자 지정 보기에 대한 모든 생성자를 정의해 보십시오.
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();
}
같은 버그를 발견하고 근본적인 이유는 다음과 같습니다.
응용프로그램 컨텍스트를 사용하여 보기를 부풀립니다.
Activity Context로 부풀리기를 하면 버그가 수정되었습니다.
질문이 이미 답이 된 것은 알지만, 누군가가 이런 문제에 부딪힐 수도 있다는 생각으로 글을 올립니다.
내 경우 문제는 res/layout/폴더의 레이아웃과 res/values/dimens의 @dimens에 대한 값을 참조하는 애플리케이션을 전화기에 로드하는 것입니다. 여기에는 액세스하려고 하는 글꼴_22가 있으며 res/values-xlarge/dimens에 정의되어 있습니다.
저는 실제로 기존 프로젝트의 UI를 업데이트하고 있습니다.
레이아웃 폴더에 대해 xml을 작성하는 동안 힌트를 위해 Ictrl+space를 사용하는 IDE Eclipse를 사용하고 있기 때문에 어떤 폴더에 대해 작성하는지에 관계없이 values-xlarge 폴더뿐만 아니라 값의 모든 값을 표시합니다.
또한 두 파일의 값이 서로 다른 화면에 대해 매핑된 값과 동일해야 한다는 것도 알고 있습니다.
이것이 누군가가 이런 종류의 어리석은 문제에 부딪히는데 도움이 되기를 바랍니다.
저도 같은 오류를 발견했는데, 오류가 무엇인지 확인하는 데 이틀이 걸렸습니다.
가 사용하려고 입니다: 는 을 하려고 입니다 입니다 하려고 는 을 .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"
/>
도움이 되었으면 좋겠습니다.
소재 테마로 테마를 선택하여 이 오류가 발생하였습니다.그러나 4.4.2에서 앱을 실행하려고 할 때 이 오류가 발생했습니다.
솔루션 : 테마_holo를 테마로 선택
제 사진 크기가 14Kb에 불과한데 문제는 디자이너가 1011pxx1819px를 줬다는 것입니다. (해상도가 너무 높아서 인플레가 발생했습니다.예외)
비슷한 문제가 발생할 경우 보기를 부풀리는 과정에서 이런 문제가 발생했습니다.
View.inflate(getApplicationContext(), R.layout.my_layout, null)
을 교체하여 getApplicationContext()
와 함께this
저는 로그캣에서 오류 메시지가 실제로 부족했기 때문에 문제의 원인을 파악하기 위해 다음과 같이 수행했습니다.
(로그캣 오류 메시지에서 my HomeFragment.java의 특정 레이아웃을 부풀리는 중에 오류가 발생했다고 합니다.)
- 배치가 부풀려지기 직전에 중단점을 뒀습니다.
- 특정 중단점에 도달할 때까지 디버그 모드로 응용 프로그램을 실행했습니다.
- 해서 하고 했습니다를 했습니다.
Evaluate expression
그 위에:Run > Evaluate Expression
아니면alt - F8
- 결과는 문제의 원인에 대한 더 많은 정보를 보여주었습니다. 제 경우에는 다음을 사용하여 그릴 수 있는 파일이었습니다.
tools:targetApi="lollipop"
(이전 장치에서만 버그가 발생했습니다.)
제게 있어서 제 문제는 제가
android:background="?attr/selectableItemBackground"
Linear Layout(선형 레이아웃) 배경에서 제거하면 테스트가 통과됩니다.
이 링크가 도움이 될 것입니다.당신의 매니페스트에 문제가 있는지 확인해 보세요.다시 발생할 수 있는 경우 전체 스택 추적을 게시하여 오류가 실제로 무엇인지 확인할 수 있습니다.
편집: 확인해 보셨을 겁니다만, TourActivity 레이아웃에 사용하는 XML 파일의 12번째 줄에 무엇이 있습니까?
답변된 질문인 것은 알지만, 제가 직면한 원인은 보이지 않습니다.
Android Studio에서 제 드로어블을 /drawable-V24 에뮬레이터는 API 23입니다.그래서 결국은 찾을 수가 없습니다.
이 솔루션은 모든 드로어블을 /드로어블 폴더(no -24)로 이동하는 것이었습니다.
이미지 파일을 "drawable-24" 폴더에서 "drawable" 폴더로 복사해야 합니다.
저는 이 문제를 해결할 뿐입니다. 그림 그리기 가능에서 이미지를 삭제하고(v24), 그림 그리기 가능 폴더에 붙여넣기만 하면 됩니다.
저도 같은 오류가 있어서 폴더 drawable-mdpi에서 폴더 drawable로 drawable 이동을 해결했습니다.Android Studio에 있는 동안 모든 것이 완벽하게 작동했기 때문에 Eclipse에서 이 추한 런타임 오류가 발생했다는 것을 깨닫는 데 시간이 걸렸습니다.
노트 편집:Eclipse에서 Android Studio로 마이그레이션할 때 프로젝트가 Eclipse에서 발생하는 경우 발생할 수 있으므로 Android Studio에서는 Eclipse와 약간의 차이가 있으므로 주의해야 합니다.
저는 방금 이 문제가 있어서 그것이 무엇인지 알아냈습니다.내 가치관에 문제를 일으키고 있는 색상을 참조하고 있었습니다.그래서 드롭다운 제안에서 사용하는 대신 수동으로 정의했습니다.효과가 있었어요!
나의 경우, Floating action 버튼을 사용하고 설정할 때 이 오류가 발생합니다.android:backgroundTint="#000"
하지 마세요. 하지 .backgroundTint
문제가 해결되었습니다.당신에게 도움이 되길 바랍니다.
저도 같은 문제가 있었는데 드로잉 가능 폴더의 이미지 앞에 있는 (24) drawable-v24를 제거하고 일반 drawable로 대체하여 해결되었습니다.
내 모든 드로우블 아이템을 드로우블-v24에서 드로우블로 이동하여 해결했습니다.
API lvl16에서 앱을 실행했을 때도 같은 오류가 있었습니다(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>
그것을 일반 색상으로 교체하면 문제가 해결되었습니다.
제 경우에는 레이아웃 파일에 사용하는 라이브러리 UI 구성 요소의 전체 패키지 이름을 지정해야 합니다.
이 실타래가 오래된 것은 알지만, 다른 사람들이 잠 못 이루는 밤을 보내게 하기 위해서라도 여전히 이 실타래에 답을 합니다.
레이아웃 파일이 모두 하드코딩된 속성을 포함하고 있는 오래된 프로젝트를 리팩토링하고 있었습니다.android:maxLength = 500
. 그래서 저는 그것을 제 것에 등록하기로 결정했습니다.res/dimen
줄을 지어 을 짓다<dimen name="max_length">500</dimen>
.
거의 30개의 레이아웃 파일을 내 리-값으로 리팩토링 완료.그거 알아?다음에 내 프로젝트를 실행했을 때 그것은 똑같이 던지기 시작했습니다.InflateException
.
해결책으로는 모든 변경 사항을 다시 수행하고 모든 가치를 이전과 동일하게 유지해야 했습니다.
TLDR;
1단계: 모두 잘 돌아가고 있습니다.
2단계: 유지보수를 강화하기 위해 교체했습니다.android:maxLength = 500
와 함께<dimen name="max_length">500</dimen>
그리고.android:maxLength = @dimen/max_length
, 거기서 모든 게 잘못됐어요InflateException
).
3단계: 모두 작동 불량
4단계: 모든 작업을 다시 대체하여 다시 수행android:maxLength = @dimen/max_length
와 함께android:maxLength = 500
.모든게 다 고쳐졌어요.
5단계: 모두 잘 돌아가고 있습니다.
이미지나 모양만 이동
예외 부풀리기:
android.view.InflateException: Binary XML file line #32: Error inflating class androidx.appcompat.widget.SearchView
at android.view.LayoutInflater.createView(LayoutInflater.java:633)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:95)
at com.foamkart.Fragment.SearchFragment.onCreateView(SearchFragment.kt:37)
저도 비슷한 문제에 직면했습니다.누구에게나 이것은 코드의 다양한 나쁜 사용의 문제가 될 수 있습니다.
- XML의 레이아웃 태그가 잘못되었습니다.
- 무거운 리소스를 ImageView에 직접 로드하면 OOM이 발생
- 스타일 사용과 관련된 문제.
가장 무시되는 요소 중 하나는 보기를 부풀리는 동안 올바른 컨텍스트를 사용하는 것일 수 있습니다.활동 컨텍스트가 필요한 ApplicationContext를 사용하지 않는지 확인하십시오.그러나 ApplicationContext는 항상 오류가 발생하지는 않지만 보기 계층에 따라 매우 중요할 수 있습니다.
BAD context로 문제를 해결했습니다(4일 만에 Activity 대신 ApplicationContext 사용!).해결되면 해보세요.해피코딩!!
저는 같은 문제에 직면했습니다. 저는 View 대신에 view tag를 xml에 뷰 태그를 xml로 사용했습니다.View 클래스로 교체하면 문제가 해결되었습니다.
당신에게도 도움이 되길 바랍니다.
API Version을 확인해야 합니다.저는 배경색을 제 것에 주곤 했습니다.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
}
선형 레이아웃에 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}
저는 같은 레이아웃 파일에서 xml 벡터 그래픽 이미지와 일반 png를 섞으려고 했기 때문에 그렇게 되었습니다.
xml 벡터 그래픽을 pngs로 교체하고 나서야 작동하기 시작했습니다.
같은 오류가 있었습니다.Crashlytics
이상한 장치로부터:Motorola One Vision Android 5.1 및 20GB(무료) RAM, 루티드 이 장치는 원래 Android 9.0, 4GB RAM과 함께 제공됩니다.
아마 누군가가 내가 현재 개발 중인 앱을 해킹하려고 하는데 다중 APK를 처리하는 데 문제가 있을 것입니다.그래서 그림을 찾을 수 없고 앱이 충돌을 전달합니다.
언급URL : https://stackoverflow.com/questions/4512981/android-view-inflateexception-binary-xml-file-line-12-error-inflating-class
'programing' 카테고리의 다른 글
tilde(~) 기호가 있는 URL에서 전체 URL 가져오기 (0) | 2023.09.11 |
---|---|
브라우저가 텍스트를 렌더링하기 위해 실제로 사용하는 글꼴을 확인하려면 어떻게 해야 합니까? (0) | 2023.09.11 |
Python의 salt and hash 암호 (0) | 2023.09.11 |
Maria DB 루트가 없으면 Engine=CONNECT로 테이블을 드롭할 수 없습니다. (0) | 2023.09.11 |
맨 위 탐색 모음 페이지의 맨 위 내용 (0) | 2023.09.11 |