Android

[안드로이드 4(키켓)]벡터이미지(xml) 적용 오류 처리 InflateException: Binary XML file line #50: Error inflating class ImageView

안드로이드 4 키켓 운영체제에서 발생하는 오류이다. 오류 내용은 xml 레이아웃에서 50번째 라인에 위치한(Binary XML file line #50) 이미지를 가져오지 못해서 발생한 오류이다. 

 

오류원인

이미지 뷰에 벡터이미지(xml)를 백그라운드로 지정했다. 그러나 안드로이드 키켓 운영체제에서는 벡터이미지를 백그라운드 속성 태그로 적용하면 오류가 발생한다.

 android.view.InflateException: Binary XML file line #50: Error inflating class ImageView
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:337)
        at android.app.Dialog.setContentView(Dialog.java:477)
        at com.test.MainActivity.onBackPressed(MainActivity.java:3346)
        at android.app.Activity.onKeyUp(Activity.java:2198)
        at android.view.KeyEvent.dispatch(KeyEvent.java:2694)
        at androidx.core.view.KeyEventDispatcher.activitySuperDispatchKeyEventPre28(KeyEventDispatcher.java:137)
        at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:87)
        at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:140)
        at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:569)
        at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
        at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:3054)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2171)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4104)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4048)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3621)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3671)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3640)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3747)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3648)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3804)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3621)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3671)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3640)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3648)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3621)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3671)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3640)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3780)
        at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3940)
        at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2010)
        at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1704)
        at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1695)
        at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:1987)
        at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:138)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:5090)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
        at dalvik.system.NativeStart.main(Native Method)

오류가 발생한 화면 레이아웃

            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:background="@drawable/ic_round_star_24"/>
             

 

아직도 많은 사람들이 갤럭시 S2와 같은 오래된 폰을 사용하는 사람들이 많은 것 같다. 업데이트 후 59명의 사용자에게서 앱 종료 오류가 발생했다. 빨리처리해서 업로드 해야하는 부분이다.


 

해결방법

키켓 또는 그 이하의 운영체제를 지원하는 앱이라면 이미지뷰에 이미지를 적용시 android:backgroud속성 대신에 app:srcCompat 속성 태그를 사용해서 처리하면 해결된다.

            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                app:srcCompat="@drawable/ic_round_star_24"/>

 

또한 텍스트뷰(TextView)의 경우에는 이미지를 뒤에 두고 싶은 경우 app:drawableEndCompat 속성 태그를 사용하면 된다.

app:drawableLeftCompat=”@drawable/ic_baseline_create_24″

app:drawableEndCompat=”@drawable/ic_baseline_create_24″

                
                
            <TextView
                android:id="@+id/create_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:drawableLeftCompat="@drawable/ic_baseline_create_24"
                android:text="@string/create_text"
                android:textColor="@color/color_41"
                android:textSize="18sp"
                android:textStyle="bold"/>   

 

REFERENCE

stackoverflow.com/questions/42389101/resourcesnotfoundexception-on-android-kitkat-and-lower

 

Leave a Reply

error: Content is protected !!