1

を膨らま:19 IAMがAPIのベクトルドロワブルとしてサポートしているAppCompatDrawableManagerを使用して、このふくらませるの例外が、IAMのが直面している:19Android.view.InflateException:バイナリXMLファイルのライン#25:エラーがAPIでは、クラスのImageButton、リソースNotFoundException、XmlPullParserException

3つの例外 1.画像の拡大/縮小ボタン 2.リソース$ NotFoundException drawableリソースからのファイルres/drawable/bckg_icon.xml
3.バイナリXMLファイル行#1:無効な描画可能タグベクトル

私はImageButton drを忌避しようとしました。 awable SRCた4つのフォーマット(hdpi、MDPI、xxhdpiなど) 私の実装:fragmnetのxmlレイアウトである XMLファイル:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/layoutPreviewActionBar" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 


<RelativeLayout 
    android:id="@+id/previewFragment" 
    android:layout_width="fill_parent" 
    android:layout_height="@dimen/action_bar_height" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_marginBottom="25dp" 
     android:layout_marginLeft="10dp" 
     android:text="00:00" 
     android:id="@+id/timeduration" 
     android:textColor="@color/colorPrimary"/> 
    <ImageButton 
     android:id="@+id/localVideo" 
     android:layout_width="@dimen/icon_width" 
     android:layout_height="@dimen/icon_height" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="14.1dp" 
     android:layout_toLeftOf="@+id/call" 
     android:background="@drawable/bckg_icon" 
     android:layout_margin="5dp" 
     android:src="@drawable/video_icon" /> 

    <ImageButton 
     android:id="@+id/call" 
     android:layout_width="@dimen/icon_width" 
     android:layout_height="@dimen/icon_height" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:background="@drawable/initiate_call_button" 
     android:clickable="true" 
     android:layout_margin="5dp" 
     app:srcCompat="@drawable/start_call" /> 

    <ImageButton 
     android:id="@+id/localAudio" 
     android:layout_width="@dimen/icon_width" 
     android:layout_height="@dimen/icon_height" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="14.1dp" 
     android:layout_toRightOf="@+id/call" 
     android:background="@drawable/bckg_icon" 
     app:srcCompat="@drawable/mic_icon" /> 
</RelativeLayout> 

マイ・フラグメントのJavaクラス、それらのドローアブルの実装:

rootView = inflater.inflate(R.layout.preview_actionbar_fragment, container, false); 
    mAudioBtn = (ImageButton)rootView.findViewById(R.id.localAudio); 
    mVideoBtn = (ImageButton)rootView.findViewById(R.id.localVideo); 
    mCallBtn = (ImageButton)rootView.findViewById(R.id.call); 
    timdura= (TextView)rootView.findViewById(R.id.timeduration); 
    c=mActivity; 
    booking_id=mActivity.bookingId; 
    drawableStartCall = AppCompatDrawableManager.get().getDrawable(mActivity,R.drawable.initiate_call_button); 
    drawableEndCall =AppCompatDrawableManager.get().getDrawable(mActivity,R.drawable.end_call_button); 
    drawableBckBtn = AppCompatDrawableManager.get().getDrawable(mActivity,R.drawable.bckg_icon); 

ログキャストの詳細:

I/com. .MainActivity: OnAttach PreviewControlFragment 
    I/com.therightdoctors.dpmdoctor.MainActivity: OnCreate PreviewControlFragment 
    D/AndroidRuntime: Shutting down VM 
    W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41a22cf8) 
    W/dalvikvm: threadid=1: uncaught exception occurred 

    E/UncaughtException: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.therightdoctors.dpmdoctor/com.therightdoctors.dpmdoctor.MainActivity}: android.view.InflateException: Binary XML file line #25: Error inflating class ImageButton 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429) 
                        at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342) 
                        at android.os.Handler.dispatchMessage(Handler.java:110) 
                        at android.os.Looper.loop(Looper.java:193) 
                        at android.app.ActivityThread.main(ActivityThread.java:5333) 
                        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:829) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) 
                        at dalvik.system.NativeStart.main(Native Method) 
                       Caused by: android.view.InflateException: Binary XML file line #25: Error inflating class ImageButton 
                        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.inflate(LayoutInflater.java:492) 
                        at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                        at com.therightdoctors.dpmdoctor.ui.PreviewControlFragment.onCreateView(PreviewControlFragment.java:165) 
                        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192) 
                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) 
                        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 
                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) 
                        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758) 
                        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363) 
                        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149) 
                        at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) 
                        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013) 
                        at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388) 
                        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607) 
                        at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178) 
                        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1174) 
                        at android.app.Activity.performStart(Activity.java:5353) 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2340) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)  
                        at android.app.ActivityThread.access$800(ActivityThread.java:151)  
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)  
                        at android.os.Handler.dispatchMessage(Handler.java:110)  
                        at android.os.Looper.loop(Looper.java:193)  
                        at android.app.ActivityThread.main(ActivityThread.java:5333)  
                        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:829)  
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)  
                        at dalvik.system.NativeStart.main(Native Method)  
                       Caused by: android.content.res.Resources$NotFoundException: File res/drawable/bckg_icon.xml from drawable resource ID #0x7f02005c 
                        at android.content.res.Resources.loadDrawable(Resources.java:2170) 
                        at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
                        at android.view.View.<init>(View.java:3579) 
                        at android.widget.ImageView.<init>(ImageView.java:123) 
                        at android.widget.ImageButton.<init>(ImageButton.java:87) 
                        at android.support.v7.widget.AppCompatImageButton.<init>(AppCompatImageButton.java:60) 
                        at android.support.v7.widget.AppCompatImageButton.<init>(AppCompatImageButton.java:56) 
                        at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:118) 
                        at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1029) 
                        at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1087) 
                        at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47) 
                        at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:172) 
                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:684) 
                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)  
                        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 com.therightdoctors.dpmdoctor.ui.PreviewControlFragment.onCreateView(PreviewControlFragment.java:165)  
                        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)  
                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)  
                        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)  
                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)  
                        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)  
                        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)  
                        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)  
                        at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)  
                        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013)  
                        at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)  
                        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)  
                        at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)  
                        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1174)  
                        at android.app.Activity.performStart(Activity.java:5353)  
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2340)  
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)  
                        at android.app.ActivityThread.access$800(ActivityThread.java:151)  
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)  
                        at android.os.Handler.dispatchMessage(Handler.java:110)  
                        at android.os.Looper.loop(Looper.java:193)  
                        at android.app.ActivityThread.main(ActivityThread.java:5333)  
                        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:829)  
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)  
                        at dalvik.system.NativeStart.main(Native Method)  
                       Caused by: org.xmlpull.v1.XmlPullParserException: Binar 

私は、画像のサイズを減らすために

  1. を働いていないのStackOverflowから

2.useアプリいくつかの同様の質問を試してみました:代わりにアンドロイドのsrcCompat:XMLでのsrc属性

問題だけではAPI:これらのタイプの例外を処理する方法については、下のDPIデバイスを参照してください。

答えて

1

同じ問題が発生したら、次の方法のいずれかを試すことができます。

  • xmlの代わりに.pngまたは.jpegを使用して、ドロワブルがドロウアブルフォルダにコピーされていることを確認してください(ドロワブル(v21)フォルダにコピーされます)。
  • それが保たれているディレクトリに.xmlのドロウアブル、同じことを確認してください。(あなたがYou can see this image

  • 利用srcCompatの代わりに、xmlファイルでSRCをプロジェクトにアンドロイドからのビューを変更することにより、ディレクトリ構造を表示することができます。あなたが可能宣言する必要があります

    'com.android.support:support-vector-drawable:23.4をコンパイルします。0'

+0

オプション1.私はアンドロイドのためにpngを使用しています:srcCompactと背景のxmlリソースはどのようにpngまたはjpegに変換できますか? Option2 Drawableフォルダ内のすべてのxmlファイルとdrawable-hdpi、drawable-mdpi、-xhdpi、-xxhdpi、-xxxhdpiフォルダ内のpng。オプション3同じエラーが表示されています。 –

2

私はそれがしばらくしている知っているが、私はあなたがここにあなたのImageButtonの背景としてVectorDrawableを使用していることを考える:私は考え出し

<ImageButton 
    android:id="@+id/localVideo" 
    android:layout_width="@dimen/icon_width" 
    android:layout_height="@dimen/icon_height" 
    android:layout_centerVertical="true" 
    android:layout_marginRight="14.1dp" 
    android:layout_toLeftOf="@+id/call" 
    android:layout_margin="5dp" 
    android:src="@drawable/video_icon" 
    android:background="@drawable/bckg_icon />" <!-- <- here is your problem --> 

そのTextViewの背景としてVectorDrawableを使用して、 EditTextButtonImageButtonなどandroid:background="..."を使用すると、古いデバイスのandroid:backgroundが古いAPIを使用していて、アンドロイドがVectorDrawableを膨らませようとすると、API19以前でクラッシュする可能性がありますそれとクラッシュする。 app:srcCompatImageViewのソースイメージとして使用している場合は、互換ライブラリを使用しているので問題はありません。 これを固定するために、あなたは、3つの方法のいずれかを使用できます。

  1. は、ビューの後ろImageViewを使用して背景を設定するために使用alternative resourcesVectorDrawableusing Compat library in runtime and sets the background
  2. をロードするカスタムウィジェットを使用して、あなたのVectorDrawable
  3. にそのapp:srcCompatを設定しますViewをAPI 21以降のVectorDrawableに追加し、より低いAPIのBitmapDrawable(例:pngファイル)に設定してください。
関連する問題